<html lang="en">
<head>
  <meta http-equiv="Pragma" content="no-cache" />
  <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
  <meta http-equiv="Expires" content="0" />
  <title>Matrices Doc</title>
  <link href="./css/semantic/semantic.min.css" rel="stylesheet">
  <link href="./css/oscTree.css" rel="stylesheet">
  <link href="./css/markdown.css" rel="stylesheet">
  <link href="./css/index.css" rel="stylesheet">
  <link rel="shortcut icon" href="css/img/Matrices.png">
  <meta name="viewport" content="width=device-width, initial-scale=1.0" charset="utf-8">
</head>
<body>
  <div class="ui container">
    <div id="project-title">
      <div class="title-wrap">
        <div class="left">
          <i class="icon eye"></i>
          Document: 
          <span id="preview-title"></span>
        </div>
        <div class="right">
          Abandoft
        </div>
      </div>
    </div>

    <div class="ui container" id="wiki-preview-container">
      <div id="wiki-preview">
        <div class="ui segment">
          <div class="ui grid page">
            <div class="three wide column doc-list">
              <div class="title">
                <a id="ex-all">
                  Expand all chapters
                </a>
              </div>
              <div class="ztree" id="tree"></div>
            </div>
            <div class="thirteen wide column doc-content">
              <div id="page-detail">
                <div class="title">
                </div>
                <div class="content markdown-body">
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      </div>
  </div>
</body>
</html>
<script src="./js/jquery.min.js"></script>
<script src="./js/ztree.all.js"></script>
<script src="./js/jquery.ztree.exhide.min.js"></script>
<script>
  var zTreeObj;var expandStatus=false;$(document).ready(function(){var setting={view:{showLine:true,showIcon:true},callback:{onClick:function(e,treeId,treeNode){if(treeNode!==null&&!treeNode.isParent&&typeof(treeNode.children)==="undefined"){var sort_id=treeNode.sort_id;var content=json_data.content;for(var c in content){if(c==sort_id){$("#page-detail .title").html(treeNode.name);$("#page-detail .content").html(content[c]);return false}}}else{zTreeObj.expandNode(treeNode)}}},data:{simpleData:{enable:true}}};zTreeObj=$.fn.zTree.init($("#tree"),setting,json_data.title);var first_content=json_data.title[0];$("#page-detail .title").html(first_content.name);$("#page-detail .content").html(json_data.content[first_content.sort_id]);$("#preview-title").html(json_data.preview_title);$("#ex-all").on("click",function(e){zTreeObj.expandAll(!expandStatus);expandStatus=!expandStatus;if(expandStatus){$(this).text("Shrink all chapters")}else{$(this).text("Expand all chapters")}})});
</script><script>var json_data = {"preview_title":"Matrices","title":[{"id":"000000000000What's Matrices ？","pId":0,"name":"What's Matrices ？","parent":null,"order":0,"sort_id":7548897,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Cp\u003E    Matrices is a matrix operations and linear algebra library for Dart. It was developed to provide matrix operations support for projects such as Astable. All operations are currently implemented in Dart language. To use it, you need to import the matrices.dart file. Also, before using Matrices, you need to understand the concepts related to linear algebra.\u003C/p\u003E\n\u003Cp\u003E    Linear algebra is a branch of mathematics that deals with vectors, linear spaces, linear transformations and finite dimensional systems of linear equations. Linear algebra deals with linear relations. A linear relationship means that the relationship between mathematical objects is expressed in a one-time form. Since nonlinear models in scientific research can often be approximated as linear models, linear algebra is widely used in the natural and social sciences.\u003C/p\u003E\n\u003Chr\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003EGrayscale releases are marked with '!', unimplemented functions are marked with '*'\u003Cbr\u003E\nAPI compatibility breaks relative to the previous major version are marked with ⚠\u003C/p\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003EA major version means that the number in position b of version number a.b.c has changed.\u003Cbr\u003E\nIf the number a has changed, it means that the refactored version has been updated (extensive code rewriting and compatibility breaking).\u003Cbr\u003E\nIf c changes, it means a minor version has been updated (no major feature updates and compatibility breaks).\u003C/p\u003E\n\u003C/blockquote\u003E\n\u003C/blockquote\u003E"},{"id":"000000000000Overview","pId":"b86d792","name":"Overview","parent":"SquareMatrix Class","order":-1,"sort_id":7613889,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Cp\u003E    SquareMatrix is a subclass of the Matrix class. The instances of this class can use all the fields and methods of the matrix class. At the same time, the SquareMatrix class contains some fields and methods specific to the square matrix, such as creating a square matrix, computing the determinant, inverse matrix, eigenvalues, eigenvectors, etc.\u003C/p\u003E\n\u003Chr\u003E"},{"id":"000000000000向量类型概览","pId":"5f1b874","name":"向量类型概览","parent":"中文文档/向量类型Vector","order":-1,"sort_id":7563401,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Cp\u003E       在Matrices中，向量即List\u0026lt; double \u0026gt;类型的数据。\u003C/p\u003E\n\u003Cp\u003E       Vector只是List\u0026lt; double \u0026gt;类型的别名。为了防止您创建的List类型变量不能作为向量使用，您可以直接显示地创建向量类型的变量。同时，Matrice提供了一些常用的创建和操作向量类型的方法。\u003C/p\u003E\n\u003Chr\u003E"},{"id":"000000000000方阵类概览","pId":"fdffb9b","name":"方阵类概览","parent":"中文文档/方阵类SquareMatrix","order":-1,"sort_id":7563406,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Cp\u003E       SquareMatrix是Matrix类的子类，该类的对象可以使用矩阵类的所有属性和方法。同时，SquareMatrix类包含一些方阵特有的属性和方法，如快速创建一个方阵、求方阵的行列式的值、逆矩阵、特征值、特征向量等。\u003C/p\u003E\n\u003Chr\u003E"},{"id":"000000000000Overview","pId":"28f1366","name":"Overview","parent":"Matrix Class","order":0,"sort_id":7613885,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Cp\u003E    The Matrix class provides common methods of all types of matrices, for exmaple, creating a matrix, indexing and modifying elements, rows and columns, inserting and appending a vector or a matrix, etc. However, the Matrix class does not provide methods specific to square matrices like computing determinant, inverse matrix, eigen values and eigen vectors, etc. In the Matrices library, the vector type is exactly the type of List\u0026lt; double \u0026gt;, and each row of a matrix instance has the type of vector, namely, List\u0026lt; double \u0026gt;. Matrices only allows creating matrix instances with named constructors listed in our docs, and the Matrix() constructor is not allowed to be called while creating a matrix.\u003C/p\u003E\n\u003Chr\u003E"},{"id":"000000000000Create a square matrix","pId":"b86d792","name":"Create a square matrix","parent":"SquareMatrix Class","order":0,"sort_id":7613887,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-square-matrix\"\u003ECreating a square matrix\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-an-identity-matrix\"\u003ECreating an identity matrix\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-square-matrix-filled-with-0s\"\u003ECreating a square matrix filled with 0’s\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-square-matrix-filled-with-1s\"\u003ECreating a square matrix filled with 1’s\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-square-matrix-filled-with-certain-value\"\u003ECreating a square matrix filled with certain value\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-square-matrix-filled-with-random-values\"\u003ECreating a square matrix filled with random values\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-square-diagonal-matrix-from-list\"\u003ECreating a square diagonal matrix from list\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-square-diagonal-matrix-filled-with-certain-value\"\u003ECreating a square diagonal matrix filled with certain value\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-square-matrix\" class=\"anchor\" href=\"#creating-a-square-matrix\"\u003E\u003C/a\u003ECreating a square matrix\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.fromList(List\u0026lt;List\u0026lt;double\u0026gt;\u0026gt; lists)\n\n  var mat = SquareMatrix.fromList([\n    [2, 3, 3],\n    [1, 2, 9],\n    [9, 8, 6]\n  ]);\n  print( mat );\n\n  // Matrix: 3x3\n  // [6.0, 9.0, 9.0]\n  // [3.0, 6.0, 27.0]\n  // [27.0, 24.0, 18.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-an-identity-matrix\" class=\"anchor\" href=\"#creating-an-identity-matrix\"\u003E\u003C/a\u003ECreating an identity matrix\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  // SquareMatrix.identity(int row)\n\n  var mat = SquareMatrix.identity(3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [1.0, 0.0, 0.0]\n  // [0.0, 1.0, 0.0]\n  // [0.0, 0.0, 1.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-square-matrix-filled-with-0s\" class=\"anchor\" href=\"#creating-a-square-matrix-filled-with-0s\"\u003E\u003C/a\u003ECreating a square matrix filled with 0’s\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.zero(int row)\n\n  var mat = SquareMatrix.zero(3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [0.0, 0.0, 0.0]\n  // [0.0, 0.0, 0.0]\n  // [0.0, 0.0, 0.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-square-matrix-filled-with-1s\" class=\"anchor\" href=\"#creating-a-square-matrix-filled-with-1s\"\u003E\u003C/a\u003ECreating a square matrix filled with 1’s\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.one(int row)\n\n  var mat = SquareMatrix.one(3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [1.0, 1.0, 1.0]\n  // [1.0, 1.0, 1.0]\n  // [1.0, 1.0, 1.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-square-matrix-filled-with-certain-value\" class=\"anchor\" href=\"#creating-a-square-matrix-filled-with-certain-value\"\u003E\u003C/a\u003ECreating a square matrix filled with certain value\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.number(double number, int row)\n\n  var mat = SquareMatrix.number(2, 3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [2.0, 2.0, 2.0]\n  // [2.0, 2.0, 2.0]\n  // [2.0, 2.0, 2.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-square-matrix-filled-with-random-values\" class=\"anchor\" href=\"#creating-a-square-matrix-filled-with-random-values\"\u003E\u003C/a\u003ECreating a square matrix filled with random values\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.random(int row)\n\n  var mat = SquareMatrix.random(3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [0.2666268534804871, 0.607635195280705, 0.581392153915932]\n  // [0.3590813328566256, 0.8098420655296595, 0.015949886001227154]\n  // [0.6670401483574298, 0.3054732396044414, 0.3113168618967712]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-square-diagonal-matrix-from-list\" class=\"anchor\" href=\"#creating-a-square-diagonal-matrix-from-list\"\u003E\u003C/a\u003ECreating a square diagonal matrix from list\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.diagonal(List\u0026lt;double\u0026gt; list)\n\n  var mat = SquareMatrix.diagonal([1,2,3]);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [1.0, 0.0, 0.0]\n  // [0.0, 2.0, 0.0]\n  // [0.0, 0.0, 3.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-square-diagonal-matrix-filled-with-certain-value\" class=\"anchor\" href=\"#creating-a-square-diagonal-matrix-filled-with-certain-value\"\u003E\u003C/a\u003ECreating a square diagonal matrix filled with certain value\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.diagonalFromNumber(double num, int row)\n\n  var mat = SquareMatrix.diagonalFromNumber(2,3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [2.0, 0.0, 0.0]\n  // [0.0, 2.0, 0.0]\n  // [0.0, 0.0, 2.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"000000000000Overview","pId":"0ac489d","name":"Overview","parent":"Vector Type","order":0,"sort_id":7613893,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Cp\u003E    In Matrices, Vector is the same as List\u0026lt; double \u0026gt;.\u003C/p\u003E\n\u003Cp\u003E    Vector is only the byname of List\u0026lt; double \u0026gt;. To prevent the List type variable you created from being used as a vector, you can explicitly create a Vector type variable. At the same time, Matrice provides some common methods for creating and manipulating vector types.\u003C/p\u003E\n\u003Chr\u003E"},{"id":"000000000000Matrices是什么？","pId":"a7bbaf9","name":"Matrices是什么？","parent":"中文文档","order":0,"sort_id":7563398,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Cp\u003E       Matrices是一个Dart语言的矩阵运算和线性代数库。开发它的目的是为Astable等项目提供矩阵运算支持。目前所有运算均使用Dart语言实现。使用时需要导入matrices.dart文件。另外，在使用Matrices之前，您需要了解线性代数的相关概念。\u003Cbr\u003E\n       线性代数是数学的一个分支，它的研究对象是向量、线性空间、线性变换和有限维的线性方程组。线性代数主要处理线性关系问题。线性关系意即数学对象之间的关系是以一次形式来表达的。由于科学研究中的非线性模型通常可以被近似为线性模型，因此线性代数被广泛地应用于自然科学和社会科学中。\u003C/p\u003E\n\u003Chr\u003E\n\u003Cp\u003E使用说明：\u003C/p\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003E灰度功能使用 ! 标记，未实现功能使用 * 进行标记\u003Cbr\u003E\n相对于上一个大版本，API发生兼容性破坏的地方将使用⚠进行标记\u003C/p\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003E大版本指版本号a.b.c中的b位置的数字发生了变化\u003Cbr\u003E\n若a发生变化则代表更新了重构版本(大量代码重写和兼容性破坏)\u003Cbr\u003E\n若c发生变化则代表更新了小版本(不会有重大功能更新和兼容性破坏)\u003C/p\u003E\n\u003C/blockquote\u003E\n\u003C/blockquote\u003E"},{"id":"000000000000创建和操作向量","pId":"5f1b874","name":"创建和操作向量","parent":"中文文档/向量类型Vector","order":0,"sort_id":7563400,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#%E9%80%9F%E8%A7%88\"\u003E速览\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%88%9B%E5%BB%BA%E5%90%91%E9%87%8F\"\u003E创建向量\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E5%90%91%E9%87%8F%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC\"\u003E获取向量元素的值\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E4%BF%AE%E6%94%B9%E5%90%91%E9%87%8F%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC\"\u003E修改向量元素的值\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E7%94%9F%E6%88%90%E5%85%A8%E4%B8%BA%E6%9F%90%E4%B8%AA%E6%95%B0%E7%9A%84%E5%90%91%E9%87%8F\"\u003E生成全为某个数的向量\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E7%94%9F%E6%88%90%E5%85%A8%E4%B8%BA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%9A%84%E5%90%91%E9%87%8F\"\u003E生成全为随机数的向量\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E6%8C%89%E7%BB%99%E5%AE%9A%E7%9A%84%E6%AD%A5%E9%95%BF%E7%94%9F%E6%88%90%E5%90%91%E9%87%8F\"\u003E按给定的步长生成向量\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"创建向量\" class=\"anchor\" href=\"#%E5%88%9B%E5%BB%BA%E5%90%91%E9%87%8F\"\u003E\u003C/a\u003E创建向量\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// 创建向量类型的变量\n  Vector vec = [1, 2, 3];\n  print( vec );    \n\n  // [1.0, 2.0, 3.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取向量元素的值\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E5%90%91%E9%87%8F%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC\"\u003E\u003C/a\u003E获取向量元素的值\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  Vector vec = [1, 2, 3];\n  print( vec[1] );    \n\n  // 2.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"修改向量元素的值\" class=\"anchor\" href=\"#%E4%BF%AE%E6%94%B9%E5%90%91%E9%87%8F%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC\"\u003E\u003C/a\u003E修改向量元素的值\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  Vector vec = [1, 2, 3];\n  vec[1] = 6;\n  print( vec[1] );    \n    \n  // 6.0\n\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"生成全为某个数的向量\" class=\"anchor\" href=\"#%E7%94%9F%E6%88%90%E5%85%A8%E4%B8%BA%E6%9F%90%E4%B8%AA%E6%95%B0%E7%9A%84%E5%90%91%E9%87%8F\"\u003E\u003C/a\u003E生成全为某个数的向量\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Vector numberVector(int length, double seed)\n\n  var vec = numberVector(4, 6);\n  print( vec );\n\n  // [6.0, 6.0, 6.0, 6.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"生成全为随机数的向量\" class=\"anchor\" href=\"#%E7%94%9F%E6%88%90%E5%85%A8%E4%B8%BA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%9A%84%E5%90%91%E9%87%8F\"\u003E\u003C/a\u003E生成全为随机数的向量\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Vector randomVector(int length)\n\n  var vec = randomVector(2);\n  print( vec );\n\n  // [0.29616116997641384, 0.1199242872392301]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"按给定的步长生成向量\" class=\"anchor\" href=\"#%E6%8C%89%E7%BB%99%E5%AE%9A%E7%9A%84%E6%AD%A5%E9%95%BF%E7%94%9F%E6%88%90%E5%90%91%E9%87%8F\"\u003E\u003C/a\u003E按给定的步长生成向量\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Vector rangeVector(num start, num end, {num step = 1})\n\n  /// 生成从start到end的步长为step的向量，默认步长为1\n  var vec = rangeVector(2, 6, step: 2)\n  print( vec );\n  \n  // [2.0, 4.0, 6.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"000000000000注意事项","pId":"5f1b874","name":"注意事项","parent":"中文文档/向量类型Vector","order":0,"sort_id":7563402,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Cp\u003E       Vector是List\u0026lt; double \u0026gt;类型的别名，因此可以使用List的所有属性和方法，也可以将Vector完全当作List来使用。在Matrices中，出于简化数据类型的目的，目前我们没有定制一个Vector类，而是借用了已有的数据类型。\u003C/p\u003E\n\u003Chr\u003E"},{"id":"000000000000创建方阵类对象","pId":"fdffb9b","name":"创建方阵类对象","parent":"中文文档/方阵类SquareMatrix","order":0,"sort_id":7563405,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%88%9B%E5%BB%BA%E6%96%B9%E9%98%B5\"\u003E创建方阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%88%9B%E5%BB%BA%E5%8D%95%E4%BD%8D%E9%98%B5\"\u003E创建单位阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA0%E7%9A%84%E6%96%B9%E9%98%B5\"\u003E元素全为0的方阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA1%E7%9A%84%E6%96%B9%E9%98%B5\"\u003E元素全为1的方阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA%E6%9F%90%E6%95%B0%E5%AD%97%E7%9A%84%E6%96%B9%E9%98%B5\"\u003E元素全为某数字的方阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%9A%84%E6%96%B9%E9%98%B5\"\u003E元素全为随机数的方阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E4%B8%BB%E5%AF%B9%E8%A7%92%E7%BA%BF%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC%E4%B8%BA%E6%9F%90%E6%95%B0%E7%BB%84%E7%9A%84%E5%AF%B9%E8%A7%92%E9%98%B5\"\u003E主对角线元素的值为某数组的对角阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E4%B8%BB%E5%AF%B9%E8%A7%92%E7%BA%BF%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC%E4%B8%BA%E6%9F%90%E6%95%B0%E5%AD%97%E7%9A%84%E5%AF%B9%E8%A7%92%E9%98%B5\"\u003E主对角线元素的值为某数字的对角阵\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"创建方阵\" class=\"anchor\" href=\"#%E5%88%9B%E5%BB%BA%E6%96%B9%E9%98%B5\"\u003E\u003C/a\u003E创建方阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.fromList(List\u0026lt;List\u0026lt;double\u0026gt;\u0026gt; lists)\n\n  var mat = SquareMatrix.fromList([\n    [2, 3, 3],\n    [1, 2, 9],\n    [9, 8, 6]\n  ]);\n  print( mat );\n\n  // Matrix: 3x3\n  // [6.0, 9.0, 9.0]\n  // [3.0, 6.0, 27.0]\n  // [27.0, 24.0, 18.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"创建单位阵\" class=\"anchor\" href=\"#%E5%88%9B%E5%BB%BA%E5%8D%95%E4%BD%8D%E9%98%B5\"\u003E\u003C/a\u003E创建单位阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  // SquareMatrix.identity(int row)\n\n  var mat = SquareMatrix.identity(3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [1.0, 0.0, 0.0]\n  // [0.0, 1.0, 0.0]\n  // [0.0, 0.0, 1.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素全为0的方阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA0%E7%9A%84%E6%96%B9%E9%98%B5\"\u003E\u003C/a\u003E元素全为0的方阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.zero(int row)\n\n  var mat = SquareMatrix.zero(3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [0.0, 0.0, 0.0]\n  // [0.0, 0.0, 0.0]\n  // [0.0, 0.0, 0.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素全为1的方阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA1%E7%9A%84%E6%96%B9%E9%98%B5\"\u003E\u003C/a\u003E元素全为1的方阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.one(int row)\n\n  var mat = SquareMatrix.one(3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [1.0, 1.0, 1.0]\n  // [1.0, 1.0, 1.0]\n  // [1.0, 1.0, 1.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素全为某数字的方阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA%E6%9F%90%E6%95%B0%E5%AD%97%E7%9A%84%E6%96%B9%E9%98%B5\"\u003E\u003C/a\u003E元素全为某数字的方阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.number(double number, int row)\n\n  var mat = SquareMatrix.number(2, 3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [2.0, 2.0, 2.0]\n  // [2.0, 2.0, 2.0]\n  // [2.0, 2.0, 2.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素全为随机数的方阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%9A%84%E6%96%B9%E9%98%B5\"\u003E\u003C/a\u003E元素全为随机数的方阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.random(int row)\n\n  var mat = SquareMatrix.random(3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [0.2666268534804871, 0.607635195280705, 0.581392153915932]\n  // [0.3590813328566256, 0.8098420655296595, 0.015949886001227154]\n  // [0.6670401483574298, 0.3054732396044414, 0.3113168618967712]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"主对角线元素的值为某数组的对角阵\" class=\"anchor\" href=\"#%E4%B8%BB%E5%AF%B9%E8%A7%92%E7%BA%BF%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC%E4%B8%BA%E6%9F%90%E6%95%B0%E7%BB%84%E7%9A%84%E5%AF%B9%E8%A7%92%E9%98%B5\"\u003E\u003C/a\u003E主对角线元素的值为某数组的对角阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.diagonal(List\u0026lt;double\u0026gt; list)\n\n  var mat = SquareMatrix.diagonal([1,2,3]);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [1.0, 0.0, 0.0]\n  // [0.0, 2.0, 0.0]\n  // [0.0, 0.0, 3.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"主对角线元素的值为某数字的对角阵\" class=\"anchor\" href=\"#%E4%B8%BB%E5%AF%B9%E8%A7%92%E7%BA%BF%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC%E4%B8%BA%E6%9F%90%E6%95%B0%E5%AD%97%E7%9A%84%E5%AF%B9%E8%A7%92%E9%98%B5\"\u003E\u003C/a\u003E主对角线元素的值为某数字的对角阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.diagonalFromNumber(double num, int row)\n\n  var mat = SquareMatrix.diagonalFromNumber(2,3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [2.0, 0.0, 0.0]\n  // [0.0, 2.0, 0.0]\n  // [0.0, 0.0, 2.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"000000000000查询","pId":"fdffb9b","name":"查询","parent":"中文文档/方阵类SquareMatrix","order":0,"sort_id":7563407,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\n\u003Ca href=\"#%E8%A1%8C%E5%88%97%E5%BC%8F%E7%9A%84%E5%80%BC\"\u003E行列式的值\u003C/a\u003E⚠\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#%E9%80%86%E7%9F%A9%E9%98%B5\"\u003E逆矩阵\u003C/a\u003E⚠\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#%E7%89%B9%E5%BE%81%E5%80%BC\"\u003E特征值\u003C/a\u003E *\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#%E7%89%B9%E5%BE%81%E5%90%91%E9%87%8F\"\u003E特征向量\u003C/a\u003E *\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"行列式的值\" class=\"anchor\" href=\"#%E8%A1%8C%E5%88%97%E5%BC%8F%E7%9A%84%E5%80%BC\"\u003E\u003C/a\u003E行列式的值\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// double determinant()\n\n  var mat = SquareMatrix.fromList([\n    [1, 2],\n    [1, 1]\n  ]);\n  print( mat.determinant() );\n\n  // -1.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"逆矩阵\" class=\"anchor\" href=\"#%E9%80%86%E7%9F%A9%E9%98%B5\"\u003E\u003C/a\u003E逆矩阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix inverse()\n\n  var mat = SquareMatrix.fromList([\n    [1, 2],\n    [1, 1]\n  ]);\n  print( mat.inverse() );\n\n  // SquareMatrix: 2x2\n  // [1.0, -1.0]\n  // [1.0, -1.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"特征值\" class=\"anchor\" href=\"#%E7%89%B9%E5%BE%81%E5%80%BC\"\u003E\u003C/a\u003E特征值\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// double eigenvalue()\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"特征向量\" class=\"anchor\" href=\"#%E7%89%B9%E5%BE%81%E5%90%91%E9%87%8F\"\u003E\u003C/a\u003E特征向量\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix eigenvector()\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"000000000000注意事项","pId":"fdffb9b","name":"注意事项","parent":"中文文档/方阵类SquareMatrix","order":0,"sort_id":7563408,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Cp\u003E       特征值和特征向量当前版本暂未提供。另外，求解行列式、逆矩阵等将会提供多种方法可供选择。以上内容即将更新，敬请期待。\u003C/p\u003E\n\u003Chr\u003E"},{"id":"000000000000矩阵类概览","pId":"fe761ad","name":"矩阵类概览","parent":"中文文档/矩阵类Matrix","order":0,"sort_id":7563417,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Cp\u003E       Matrix类里提供了所有类型的矩阵共有的方法，如创建一般矩阵、查询矩阵的元素或某行某列并对其进行修改，拼接向量或矩阵到原矩阵等。但是，Matrix类未提供方阵特有的方法，比如求矩阵行列式的值、求逆矩阵、求特征值等。在Matrices中，向量即List\u0026lt; double \u0026gt; 类型，并且矩阵的每一行都是一个向量。Matrices只允许使用文档里提供的命名构造方法创建矩阵，禁止使用Matrix()构造方法。\u003C/p\u003E\n\u003Chr\u003E"},{"id":"28f1366","pId":0,"name":"Matrix Class","parent":"","sort_id":7548911,"order":1,"isParent":true,"extname":null,"open":false},{"id":"000000000000Create a matrix","pId":"28f1366","name":"Create a matrix","parent":"Matrix Class","order":1,"sort_id":7613880,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-matrix\"\u003ECreating a matrix\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-matrix-filled-with-0s\"\u003ECreating a matrix filled with 0’s\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-matrix-filled-with-1s\"\u003ECreating a matrix filled with 1’s\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-matrix-filled-with-certain-value\"\u003ECreating a matrix filled with certain value\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-matrix-from-a-flattened-list\"\u003ECreating a matrix from a flattened list\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-matrix-filled-with-random-values\"\u003ECreating a matrix filled with random values\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-matrix\" class=\"anchor\" href=\"#creating-a-matrix\"\u003E\u003C/a\u003ECreating a matrix\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.fromList(List\u0026lt;List\u0026lt;double\u0026gt;\u0026gt; lists)\n\n  var mat = Matrix.fromList([\n    [1, 2, 3, 4],\n    [5, 6, 7, 8]\n  ]);\n  print( mat );\n\n  // Matrix: 2x4\n  // [1.0, 2.0, 3.0, 4.0]\n  // [5.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-matrix-filled-with-0s\" class=\"anchor\" href=\"#creating-a-matrix-filled-with-0s\"\u003E\u003C/a\u003ECreating a matrix filled with 0’s\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.zero(int row, int column)\n\n  var mat = Matrix.zero(2, 3);\n  print( mat );\n\n  // Matrix: 2x3\n  // [0.0, 0.0, 0.0]\n  // [0.0, 0.0, 0.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-matrix-filled-with-1s\" class=\"anchor\" href=\"#creating-a-matrix-filled-with-1s\"\u003E\u003C/a\u003ECreating a matrix filled with 1’s\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.one(int row, int column)\n\n  var mat = Matrix.one(2, 3);\n  print( mat );\n  \n  // Matrix: 2x3\n  // [1.0, 1.0, 1.0]\n  // [1.0, 1.0, 1.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-matrix-filled-with-certain-value\" class=\"anchor\" href=\"#creating-a-matrix-filled-with-certain-value\"\u003E\u003C/a\u003ECreating a matrix filled with certain value\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.number(double number, int row, int column)\n\n  var mat = Matrix.number(9, 2, 3);\n  print( mat );\n  \n  // Matrix: 2x3\n  // [9.0, 9.0, 9.0]\n  // [9.0, 9.0, 9.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-matrix-from-a-flattened-list\" class=\"anchor\" href=\"#creating-a-matrix-from-a-flattened-list\"\u003E\u003C/a\u003ECreating a matrix from a flattened list\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  // Matrix.fromFlattenedList(List\u0026lt;double\u0026gt; list, int row, int column)\n  // If the length of the flattened list is smaller than the expected matrix size,\n  // zeros will be filled in the vacant position.\n  \n  var mat1 = Matrix.fromFlattenedList([1, 2, 3, 4], 2, 2);\n  var mat2 = Matrix.fromFlattenedList([1, 2, 3, 4], 2, 3);\n  print(mat1);\n  print(mat2);\n\n  // Matrix: 2x2\n  // [1.0, 2.0]\n  // [3.0, 4.0]\n\n  // Matrix: 2x3\n  // [1.0, 2.0, 3.0]\n  // [4.0, 0.0, 0.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-matrix-filled-with-random-values\" class=\"anchor\" href=\"#creating-a-matrix-filled-with-random-values\"\u003E\u003C/a\u003ECreating a matrix filled with random values\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.random(int row, int column)\n\n  var mat = Matrix.random(2, 3);\n  print( mat );\n  \n  // Matrix: 2x3\n  // [0.38224693703597046, 0.5412146597032305, 0.6424342222644003]\n  // [0.8491145735932242, 0.6236773300386973, 0.25269555696856316]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"000000000000null","pId":"5dd5e16","name":"null","parent":"Other Version","order":1,"sort_id":7590817,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Cp\u003E.keep\u003C/p\u003E"},{"id":"000000000000Create and operate","pId":"0ac489d","name":"Create and operate","parent":"Vector Type","order":1,"sort_id":7613891,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-vector\"\u003ECreating a vector\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#indexing-a-vector-element\"\u003EIndexing a vector element\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#modifying-a-vector-element\"\u003EModifying a vector element\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-vector-filled-with-certain-value\"\u003ECreating a vector filled with certain value\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-vector-filled-with-random-values\"\u003ECreating a vector filled with random values\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-vector-by-given-step\"\u003ECreating a vector by given step\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-vector\" class=\"anchor\" href=\"#creating-a-vector\"\u003E\u003C/a\u003ECreating a vector\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Create a vector with type Vector\n  Vector vec = [1, 2, 3];\n  print( vec );    \n\n  // [1.0, 2.0, 3.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"indexing-a-vector-element\" class=\"anchor\" href=\"#indexing-a-vector-element\"\u003E\u003C/a\u003EIndexing a vector element\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  Vector vec = [1, 2, 3];\n  print( vec[1] );    \n\n  // 2.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"modifying-a-vector-element\" class=\"anchor\" href=\"#modifying-a-vector-element\"\u003E\u003C/a\u003EModifying a vector element\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  Vector vec = [1, 2, 3];\n  vec[1] = 6;\n  print( vec[1] );    \n    \n  // 6.0\n\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-vector-filled-with-certain-value\" class=\"anchor\" href=\"#creating-a-vector-filled-with-certain-value\"\u003E\u003C/a\u003ECreating a vector filled with certain value\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Vector numberVector(int length, double seed)\n\n  var vec = numberVector(4, 6);\n  print( vec );\n\n  // [6.0, 6.0, 6.0, 6.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-vector-filled-with-random-values\" class=\"anchor\" href=\"#creating-a-vector-filled-with-random-values\"\u003E\u003C/a\u003ECreating a vector filled with random values\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Vector randomVector(int length)\n\n  var vec = randomVector(2);\n  print( vec );\n\n  // [0.29616116997641384, 0.1199242872392301]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-vector-by-given-step\" class=\"anchor\" href=\"#creating-a-vector-by-given-step\"\u003E\u003C/a\u003ECreating a vector by given step\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Vector rangeVector(num start, num end, {num step = 1})\n\n  /// Creating a vector from start parameter to end parameter by given step (1 by default)\n  var vec = rangeVector(2, 6, step: 2)\n  print( vec );\n  \n  // [2.0, 4.0, 6.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"fe761ad","pId":"a7bbaf9","name":"矩阵类Matrix","parent":"中文文档","sort_id":7563409,"order":1,"isParent":true,"extname":null,"open":false},{"id":"000000000000创建矩阵类对象","pId":"fe761ad","name":"创建矩阵类对象","parent":"中文文档/矩阵类Matrix","order":1,"sort_id":7563411,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%88%9B%E5%BB%BA%E7%9F%A9%E9%98%B5\"\u003E创建矩阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA0%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E元素全为0的矩阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA1%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E元素全为1的矩阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA%E6%9F%90%E6%95%B0%E5%AD%97%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E元素全为某数字的矩阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E4%B8%BA%E6%9F%90%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E元素为某个数组的矩阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E元素全为随机数的矩阵\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"创建矩阵\" class=\"anchor\" href=\"#%E5%88%9B%E5%BB%BA%E7%9F%A9%E9%98%B5\"\u003E\u003C/a\u003E创建矩阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.fromList(List\u0026lt;List\u0026lt;double\u0026gt;\u0026gt; lists)\n\n  var mat = Matrix.fromList([\n    [1, 2, 3, 4],\n    [5, 6, 7, 8]\n  ]);\n  print( mat );\n\n  // Matrix: 2x4\n  // [1.0, 2.0, 3.0, 4.0]\n  // [5.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素全为0的矩阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA0%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E\u003C/a\u003E元素全为0的矩阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.zero(int row, int column)\n\n  var mat = Matrix.zero(2, 3);\n  print( mat );\n\n  // Matrix: 2x3\n  // [0.0, 0.0, 0.0]\n  // [0.0, 0.0, 0.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素全为1的矩阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA1%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E\u003C/a\u003E元素全为1的矩阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.one(int row, int column)\n\n  var mat = Matrix.one(2, 3);\n  print( mat );\n  \n  // Matrix: 2x3\n  // [1.0, 1.0, 1.0]\n  // [1.0, 1.0, 1.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素全为某数字的矩阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA%E6%9F%90%E6%95%B0%E5%AD%97%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E\u003C/a\u003E元素全为某数字的矩阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.number(double number, int row, int column)\n\n  var mat = Matrix.number(9, 2, 3);\n  print( mat );\n  \n  // Matrix: 2x3\n  // [9.0, 9.0, 9.0]\n  // [9.0, 9.0, 9.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素为某个数组的矩阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E4%B8%BA%E6%9F%90%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E\u003C/a\u003E元素为某个数组的矩阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  // Matrix.fromFlattenedList(List\u0026lt;double\u0026gt; list, int row, int column)\n  // 如果数组元素的数量不足，则用0补全矩阵\n  \n  var mat1 = Matrix.fromFlattenedList([1, 2, 3, 4], 2, 2);\n  var mat2 = Matrix.fromFlattenedList([1, 2, 3, 4], 2, 3);\n  print(mat1);\n  print(mat2);\n\n  // Matrix: 2x2\n  // [1.0, 2.0]\n  // [3.0, 4.0]\n\n  // Matrix: 2x3\n  // [1.0, 2.0, 3.0]\n  // [4.0, 0.0, 0.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素全为随机数的矩阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E\u003C/a\u003E元素全为随机数的矩阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.random(int row, int column)\n\n  var mat = Matrix.random(2, 3);\n  print( mat );\n  \n  // Matrix: 2x3\n  // [0.38224693703597046, 0.5412146597032305, 0.6424342222644003]\n  // [0.8491145735932242, 0.6236773300386973, 0.25269555696856316]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"000000000000Query","pId":"28f1366","name":"Query","parent":"Matrix Class","order":2,"sort_id":7613886,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#indexing-a-matrix-element\"\u003EIndexing a matrix element\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#number-of-rows\"\u003ENumber of rows\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#number-of-columns\"\u003ENumber of columns\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#total-number-of-elements\"\u003ETotal number of elements\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#maximum-of-elements\"\u003EMaximum of elements\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#minimum-of-elements\"\u003EMinimum of elements\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#slicing-a-row\"\u003ESlicing a row\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#slicing-a-column\"\u003ESlicing a column\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#transposing\"\u003ETransposing\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#row-echelon-form\"\u003ERow Echelon Form\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#rank\"\u003ERank\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#cropping-to-squarematrix\"\u003ECropping to squarematrix\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Cp\u003E    \nTake the matrix mat as example, too.\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003EMatrix mat 2x4\n    [1, 2, 3, 4]\n    [5, 6, 7, 8]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"indexing-a-matrix-element\" class=\"anchor\" href=\"#indexing-a-matrix-element\"\u003E\u003C/a\u003EIndexing a matrix element\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat[1][2] );\n\n  // 7.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"number-of-rows\" class=\"anchor\" href=\"#number-of-rows\"\u003E\u003C/a\u003ENumber of rows\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.rowCount );\n\n  // 2\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"number-of-columns\" class=\"anchor\" href=\"#number-of-columns\"\u003E\u003C/a\u003ENumber of columns\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.columnCount );\n\n  // 4\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"total-number-of-elements\" class=\"anchor\" href=\"#total-number-of-elements\"\u003E\u003C/a\u003ETotal number of elements\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.count );\n\n  // 8\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"maximum-of-elements\" class=\"anchor\" href=\"#maximum-of-elements\"\u003E\u003C/a\u003EMaximum of elements\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.max );\n\n  // 8.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"minimum-of-elements\" class=\"anchor\" href=\"#minimum-of-elements\"\u003E\u003C/a\u003EMinimum of elements\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.min );\n\n  // 1.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"slicing-a-row\" class=\"anchor\" href=\"#slicing-a-row\"\u003E\u003C/a\u003ESlicing a row\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// List\u0026lt;double\u0026gt; row(int row)\n  print( mat.row(0) );\n\n  // An easier slicing method\n  print( mat[0] );\n\n  // [1.0, 2.0, 3.0, 4.0]\n  // [1.0, 2.0, 3.0, 4.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"slicing-a-column\" class=\"anchor\" href=\"#slicing-a-column\"\u003E\u003C/a\u003ESlicing a column\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// List\u0026lt;double\u0026gt; column(int column)\n  print( mat.column(0) );\n\n  // Here, we also provide an easier slicing method for columns\n  // Add a minus before real column index to slice column (except the 1st column)\n\n  // Slicing the 1st column\n  print( mat[''] );\n  // Slicing the 2nd column\n  print( mat[-1] );\n\n  // [1.0, 5.0]\n  // [1.0, 5.0]\n  // [2.0, 6.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"transposing\" class=\"anchor\" href=\"#transposing\"\u003E\u003C/a\u003ETransposing\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.transpose );\n\n  // Matrix: 4x2\n  // [1.0, 5.0]\n  // [2.0, 6.0]\n  // [3.0, 7.0]\n  // [4.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"row-echelon-form\" class=\"anchor\" href=\"#row-echelon-form\"\u003E\u003C/a\u003ERow Echelon Form\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.rowEchelonForm );\n\n  // Matrix: 2x4\n  // [1.0, 0.0, -1.00000, -2.00000]\n  // [0.0, 1.0, 2.00000, 3.00000]\n\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"rank\" class=\"anchor\" href=\"#rank\"\u003E\u003C/a\u003ERank\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.rank );\n\n  // 2\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"cropping-to-squarematrix\" class=\"anchor\" href=\"#cropping-to-squarematrix\"\u003E\u003C/a\u003ECropping to squarematrix\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.square );\n\n  // SquareMatrix: 2x2\n  // [1.0, 2.0]\n  // [5.0, 6.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"b86d792","pId":0,"name":"SquareMatrix Class","parent":"","sort_id":7548913,"order":2,"isParent":true,"extname":null,"open":false},{"id":"000000000000Query","pId":"b86d792","name":"Query","parent":"SquareMatrix Class","order":2,"sort_id":7613890,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\n\u003Ca href=\"#determinant\"\u003EDeterminant\u003C/a\u003E⚠\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#inverse-matrix\"\u003EInverse Matrix\u003C/a\u003E⚠\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#eigen-value\"\u003EEigen value\u003C/a\u003E *\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#eigen-vector\"\u003EEigen vector\u003C/a\u003E *\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"determinant\" class=\"anchor\" href=\"#determinant\"\u003E\u003C/a\u003EDeterminant\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// double determinant()\n\n  var mat = SquareMatrix.fromList([\n    [1, 2],\n    [1, 1]\n  ]);\n  print( mat.determinant() );\n\n  // -1.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"inverse-matrix\" class=\"anchor\" href=\"#inverse-matrix\"\u003E\u003C/a\u003EInverse Matrix\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix inverse()\n\n  var mat = SquareMatrix.fromList([\n    [1, 2],\n    [1, 1]\n  ]);\n  print( mat.inverse() );\n\n  // SquareMatrix: 2x2\n  // [1.0, -1.0]\n  // [1.0, -1.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"eigen-value\" class=\"anchor\" href=\"#eigen-value\"\u003E\u003C/a\u003EEigen value\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// double eigenvalue()\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"eigen-vector\" class=\"anchor\" href=\"#eigen-vector\"\u003E\u003C/a\u003EEigen vector\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix eigenvector()\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"000000000000Matters need attention","pId":"0ac489d","name":"Matters need attention","parent":"Vector Type","order":2,"sort_id":7613892,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Cp\u003E    The Vector type is byname of List\u0026lt; double \u0026gt; type, thus, you are able to access all fields and call all methods provided by List class, you can also use Vector as a List. In Matrices, for the purpose of simplifying data types, we have not customized a Vector class, but borrowed existing dart data types.\u003C/p\u003E\n\u003Chr\u003E"},{"id":"fdffb9b","pId":"a7bbaf9","name":"方阵类SquareMatrix","parent":"中文文档","sort_id":7563404,"order":2,"isParent":true,"extname":null,"open":false},{"id":"000000000000查询","pId":"fe761ad","name":"查询","parent":"中文文档/矩阵类Matrix","order":2,"sort_id":7563415,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E6%9F%90%E4%B8%AA%E5%85%83%E7%B4%A0\"\u003E获取某个元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E8%A1%8C%E6%95%B0\"\u003E获取矩阵的行数\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E5%88%97%E6%95%B0\"\u003E获取矩阵的列数\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E5%85%83%E7%B4%A0%E6%80%BB%E6%95%B0\"\u003E获取矩阵的元素总数\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E5%85%83%E7%B4%A0%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC\"\u003E获取矩阵的元素的最大值\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E5%85%83%E7%B4%A0%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC\"\u003E获取矩阵的元素的最小值\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E6%9F%90%E4%B8%80%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E获取某一行元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E6%9F%90%E4%B8%80%E5%88%97%E5%85%83%E7%B4%A0\"\u003E获取某一列元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#%E8%BD%AC%E7%BD%AE%E7%9F%A9%E9%98%B5\"\u003E转置矩阵\u003C/a\u003E⚠\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#%E8%A1%8C%E9%98%B6%E6%A2%AF%E5%BD%A2\"\u003E行阶梯形\u003C/a\u003E⚠\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#%E7%9F%A9%E9%98%B5%E7%9A%84%E7%A7%A9\"\u003E矩阵的秩\u003C/a\u003E⚠\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#%E6%88%AA%E5%8F%96%E7%9F%A9%E9%98%B5%E4%B8%BA%E6%96%B9%E9%98%B5\"\u003E截取矩阵为方阵\u003C/a\u003E⚠\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Cp\u003E       \n以mat矩阵作为例子进行演示\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003EMatrix mat 2x4\n    [1, 2, 3, 4]\n    [5, 6, 7, 8]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取某个元素\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E6%9F%90%E4%B8%AA%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E获取某个元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat[1][2] );\n\n  // 7.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取矩阵的行数\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E8%A1%8C%E6%95%B0\"\u003E\u003C/a\u003E获取矩阵的行数\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.rowCount );\n\n  // 2\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取矩阵的列数\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E5%88%97%E6%95%B0\"\u003E\u003C/a\u003E获取矩阵的列数\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.columnCount );\n\n  // 4\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取矩阵的元素总数\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E5%85%83%E7%B4%A0%E6%80%BB%E6%95%B0\"\u003E\u003C/a\u003E获取矩阵的元素总数\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.count );\n\n  // 8\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取矩阵的元素的最大值\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E5%85%83%E7%B4%A0%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC\"\u003E\u003C/a\u003E获取矩阵的元素的最大值\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.max );\n\n  // 8.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取矩阵的元素的最小值\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E5%85%83%E7%B4%A0%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC\"\u003E\u003C/a\u003E获取矩阵的元素的最小值\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.min );\n\n  // 1.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取某一行元素\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E6%9F%90%E4%B8%80%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E获取某一行元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// List\u0026lt;double\u0026gt; row(int row)\n  print( mat.row(0) );\n\n  // 下面是简单写法\n  print( mat[0] );\n\n  // [1.0, 2.0, 3.0, 4.0]\n  // [1.0, 2.0, 3.0, 4.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取某一列元素\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E6%9F%90%E4%B8%80%E5%88%97%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E获取某一列元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// List\u0026lt;double\u0026gt; column(int column)\n  print( mat.column(0) );\n\n  // 也提供了一种简单写法\n  // 除第0列外，去掉负号就是列的实际索引\n\n  // 获取第0列元素\n  print( mat[''] );\n  // 获取第1列元素\n  print( mat[-1] );\n\n  // [1.0, 5.0]\n  // [1.0, 5.0]\n  // [2.0, 6.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"转置矩阵\" class=\"anchor\" href=\"#%E8%BD%AC%E7%BD%AE%E7%9F%A9%E9%98%B5\"\u003E\u003C/a\u003E转置矩阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.transpose );\n\n  // Matrix: 4x2\n  // [1.0, 5.0]\n  // [2.0, 6.0]\n  // [3.0, 7.0]\n  // [4.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"行阶梯形\" class=\"anchor\" href=\"#%E8%A1%8C%E9%98%B6%E6%A2%AF%E5%BD%A2\"\u003E\u003C/a\u003E行阶梯形\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.rowEchelonForm );\n\n  // Matrix: 2x4\n  // [1.0, 0.0, -1.00000, -2.00000]\n  // [0.0, 1.0, 2.00000, 3.00000]\n\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"矩阵的秩\" class=\"anchor\" href=\"#%E7%9F%A9%E9%98%B5%E7%9A%84%E7%A7%A9\"\u003E\u003C/a\u003E矩阵的秩\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.rank );\n\n  // 2\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"截取矩阵为方阵\" class=\"anchor\" href=\"#%E6%88%AA%E5%8F%96%E7%9F%A9%E9%98%B5%E4%B8%BA%E6%96%B9%E9%98%B5\"\u003E\u003C/a\u003E截取矩阵为方阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.square );\n\n  // SquareMatrix: 2x2\n  // [1.0, 2.0]\n  // [5.0, 6.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"000000000000Modify","pId":"28f1366","name":"Modify","parent":"Matrix Class","order":3,"sort_id":7613884,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#modify-an-element\"\u003EModify an element\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#modify-a-row\"\u003EModify a row\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#modify-a-column\"\u003EModify a column\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Cp\u003E    \nTake the matrix mat as example, too.\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003EMatrix mat 2x4\n    [1, 2, 3, 4]\n    [5, 6, 7, 8]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"modify-an-element\" class=\"anchor\" href=\"#modify-an-element\"\u003E\u003C/a\u003EModify an element\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  mat[0][0] = 6;\n  print( mat[0] );\n\n  // [6.0, 2.0, 3.0, 4.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"modify-a-row\" class=\"anchor\" href=\"#modify-a-row\"\u003E\u003C/a\u003EModify a row\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// setRow(List\u0026lt;double\u0026gt; list, int row)\n  mat.setRow([6, 6, 6, 6], 0);\n  print( mat[0] );\n\n  // [6.0, 6.0, 6.0, 6.0]\n\n  // A eaiser way to modify a row\n  mat[0] = [8, 8, 8, 8];\n  print( mat[0] );\n\n  // [8.0, 8.0, 8.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"modify-a-column\" class=\"anchor\" href=\"#modify-a-column\"\u003E\u003C/a\u003EModify a column\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// setColumn(List\u0026lt;double\u0026gt; list, int column)\n  mat.setColumn([6, 6], 0);\n  print( mat );\n\n  // Matrix: 2x4\n  // [6.0, 2.0, 3.0, 4.0]\n  // [6.0, 6.0, 7.0, 8.0]\n\n  // A eaiser way to modify a column\n  // Add a minus before real column index to modify column (except the 1st column which requires an empty string)\n  mat[''] = [8, 8];\n  mat[-1] = [9, 9];\n  print( mat );\n\n  // Matrix: 2x4\n  // [8.0, 9.0, 3.0, 4.0]\n  // [8.0, 9.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"000000000000Matters need attention","pId":"b86d792","name":"Matters need attention","parent":"SquareMatrix Class","order":3,"sort_id":7613888,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Cp\u003E    The eigen value and eigen vector are not available in the current version. In addition, a variety of methods computing determinant and inverse matrix will be provided for users to choose from. The above content will be updated soon. Please look forward to it.\u003C/p\u003E\n\u003Chr\u003E"},{"id":"0ac489d","pId":0,"name":"Vector Type","parent":"","sort_id":7548915,"order":3,"isParent":true,"extname":null,"open":false},{"id":"5f1b874","pId":"a7bbaf9","name":"向量类型Vector","parent":"中文文档","sort_id":7563399,"order":3,"isParent":true,"extname":null,"open":false},{"id":"000000000000修改","pId":"fe761ad","name":"修改","parent":"中文文档/矩阵类Matrix","order":3,"sort_id":7563410,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#%E4%BF%AE%E6%94%B9%E6%9F%90%E4%B8%AA%E5%85%83%E7%B4%A0\"\u003E修改某个元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E4%BF%AE%E6%94%B9%E6%9F%90%E4%B8%80%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E修改某一行元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E4%BF%AE%E6%94%B9%E6%9F%90%E4%B8%80%E5%88%97%E5%85%83%E7%B4%A0\"\u003E修改某一列元素\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Cp\u003E       \n同样以mat矩阵作为例子进行演示\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003EMatrix mat 2x4\n    [1, 2, 3, 4]\n    [5, 6, 7, 8]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"修改某个元素\" class=\"anchor\" href=\"#%E4%BF%AE%E6%94%B9%E6%9F%90%E4%B8%AA%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E修改某个元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  mat[0][0] = 6;\n  print( mat[0] );\n\n  // [6.0, 2.0, 3.0, 4.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"修改某一行元素\" class=\"anchor\" href=\"#%E4%BF%AE%E6%94%B9%E6%9F%90%E4%B8%80%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E修改某一行元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// setRow(List\u0026lt;double\u0026gt; list, int row)\n  mat.setRow([6, 6, 6, 6], 0);\n  print( mat[0] );\n\n  // [6.0, 6.0, 6.0, 6.0]\n\n  // 也有一种简单的方式\n  mat[0] = [8, 8, 8, 8];\n  print( mat[0] );\n\n  // [8.0, 8.0, 8.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"修改某一列元素\" class=\"anchor\" href=\"#%E4%BF%AE%E6%94%B9%E6%9F%90%E4%B8%80%E5%88%97%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E修改某一列元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// setColumn(List\u0026lt;double\u0026gt; list, int column)\n  mat.setColumn([6, 6], 0);\n  print( mat );\n\n  // Matrix: 2x4\n  // [6.0, 2.0, 3.0, 4.0]\n  // [6.0, 6.0, 7.0, 8.0]\n\n  // 也有一种简单的方式\n  // 除第0列外，去掉负号就是列的实际索引\n  mat[''] = [8, 8];\n  mat[-1] = [9, 9];\n  print( mat );\n\n  // Matrix: 2x4\n  // [8.0, 9.0, 3.0, 4.0]\n  // [8.0, 9.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"000000000000Insert \u0026 Append","pId":"28f1366","name":"Insert \u0026 Append","parent":"Matrix Class","order":4,"sort_id":7613882,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#adding-a-row\"\u003EAdding a row\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#adding-a-column\"\u003EAdding a column\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#appending-rows\"\u003EAppending rows\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#appending-columns\"\u003EAppending columns\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Cp\u003E    \nTake the matrix mat as example, too.\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003EMatrix mat 2x4\n    [1, 2, 3, 4]\n    [5, 6, 7, 8]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"adding-a-row\" class=\"anchor\" href=\"#adding-a-row\"\u003E\u003C/a\u003EAdding a row\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// addRow(List\u0026lt;double\u0026gt; list, int index)\n\n  mat.addRow([8,8,8,8], 0);\n  print( mat );\n\n  // Matrix: 3x4\n  // [8.0, 8.0, 8.0, 8.0]\n  // [1.0, 2.0, 3.0, 4.0]\n  // [5.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"adding-a-column\" class=\"anchor\" href=\"#adding-a-column\"\u003E\u003C/a\u003EAdding a column\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// addColumn(List\u0026lt;double\u0026gt; list, int index)\n\n  mat.addColumn([8, 8], 1);\n  print( mat );\n\n  // Matrix: 2x5\n  // [1.0, 8.0, 2.0, 3.0, 4.0]\n  // [5.0, 8.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"appending-rows\" class=\"anchor\" href=\"#appending-rows\"\u003E\u003C/a\u003EAppending rows\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// appendRows(Matrix injected)\n\n  var tail = Matrix.fromList([\n    [8, 8, 8, 8],\n    [8, 8, 8, 8]\n  ]);\n  mat.appendRows(tail);\n  print( mat );\n\n  // Matrix: 4x4\n  // [1.0, 2.0, 3.0, 4.0]\n  // [5.0, 6.0, 7.0, 8.0]\n  // [8.0, 8.0, 8.0, 8.0]\n  // [8.0, 8.0, 8.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"appending-columns\" class=\"anchor\" href=\"#appending-columns\"\u003E\u003C/a\u003EAppending columns\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// appendColumns(Matrix injected)\n\n  var tail = Matrix.fromList([\n    [8, 9],\n    [8, 9]\n  ]);\n  mat.appendColumns(tail);\n  print( mat );\n\n  // Matrix: 2x6\n  // [1.0, 2.0, 3.0, 4.0, 8.0, 9.0]\n  // [5.0, 6.0, 7.0, 8.0, 8.0, 9.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"000000000000增加","pId":"fe761ad","name":"增加","parent":"中文文档/矩阵类Matrix","order":4,"sort_id":7563414,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%A2%9E%E5%8A%A0%E4%B8%80%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E增加一行元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%A2%9E%E5%8A%A0%E4%B8%80%E5%88%97%E5%85%83%E7%B4%A0\"\u003E增加一列元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E6%8C%89%E8%A1%8C%E8%BF%BD%E5%8A%A0%E4%B8%80%E4%B8%AA%E7%9F%A9%E9%98%B5%E7%9A%84%E6%AF%8F%E4%B8%80%E8%A1%8C\"\u003E按行追加一个矩阵的每一行\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E6%8C%89%E5%88%97%E8%BF%BD%E5%8A%A0%E4%B8%80%E4%B8%AA%E7%9F%A9%E9%98%B5%E7%9A%84%E6%AF%8F%E4%B8%80%E5%88%97\"\u003E按列追加一个矩阵的每一列\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Cp\u003E       \n同样以mat矩阵作为例子进行演示\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003EMatrix mat 2x4\n    [1, 2, 3, 4]\n    [5, 6, 7, 8]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"增加一行元素\" class=\"anchor\" href=\"#%E5%A2%9E%E5%8A%A0%E4%B8%80%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E增加一行元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// addRow(List\u0026lt;double\u0026gt; list, int index)\n\n  mat.addRow([8,8,8,8], 0);\n  print( mat );\n\n  // Matrix: 3x4\n  // [8.0, 8.0, 8.0, 8.0]\n  // [1.0, 2.0, 3.0, 4.0]\n  // [5.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"增加一列元素\" class=\"anchor\" href=\"#%E5%A2%9E%E5%8A%A0%E4%B8%80%E5%88%97%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E增加一列元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// addColumn(List\u0026lt;double\u0026gt; list, int index)\n\n  mat.addColumn([8, 8], 1);\n  print( mat );\n\n  // Matrix: 2x5\n  // [1.0, 8.0, 2.0, 3.0, 4.0]\n  // [5.0, 8.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"按行追加一个矩阵的每一行\" class=\"anchor\" href=\"#%E6%8C%89%E8%A1%8C%E8%BF%BD%E5%8A%A0%E4%B8%80%E4%B8%AA%E7%9F%A9%E9%98%B5%E7%9A%84%E6%AF%8F%E4%B8%80%E8%A1%8C\"\u003E\u003C/a\u003E按行追加一个矩阵的每一行\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// appendRows(Matrix injected)\n\n  var tail = Matrix.fromList([\n    [8, 8, 8, 8],\n    [8, 8, 8, 8]\n  ]);\n  mat.appendRows(tail);\n  print( mat );\n\n  // Matrix: 4x4\n  // [1.0, 2.0, 3.0, 4.0]\n  // [5.0, 6.0, 7.0, 8.0]\n  // [8.0, 8.0, 8.0, 8.0]\n  // [8.0, 8.0, 8.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"按列追加一个矩阵的每一列\" class=\"anchor\" href=\"#%E6%8C%89%E5%88%97%E8%BF%BD%E5%8A%A0%E4%B8%80%E4%B8%AA%E7%9F%A9%E9%98%B5%E7%9A%84%E6%AF%8F%E4%B8%80%E5%88%97\"\u003E\u003C/a\u003E按列追加一个矩阵的每一列\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// appendColumns(Matrix injected)\n\n  var tail = Matrix.fromList([\n    [8, 9],\n    [8, 9]\n  ]);\n  mat.appendColumns(tail);\n  print( mat );\n\n  // Matrix: 2x6\n  // [1.0, 2.0, 3.0, 4.0, 8.0, 9.0]\n  // [5.0, 6.0, 7.0, 8.0, 8.0, 9.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"000000000000路线图","pId":"a7bbaf9","name":"路线图","parent":"中文文档","order":4,"sort_id":7563418,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Cp\u003E       我们致力于让Matrices运算更快、功能更强大、使用更方便。因此，若您有一些建议或者可以提供代码的改进，请联系我们。同时，为了达成这些目标，我们制定了这个路线图。\u003C/p\u003E\n\u003Chr\u003E\n\u003Col\u003E\n\u003Cli\u003E完善线性代数的相关内容。如提供特征值、特征向量等。\u003C/li\u003E\n\u003C/ol\u003E\n\u003Cbr\u003E\n\u003Col start=\"2\"\u003E\n\u003Cli\u003E为了在特定场景下加速运算速度，我们计划提供float类型作为向量和矩阵的元素的默认数据类型。\u003C/li\u003E\n\u003C/ol\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003E由于Dart不提供单精度浮点数，这一功能的实现方式将有一些曲折(预计2023 Q2更新)。\u003C/p\u003E\n\u003C/blockquote\u003E\n\u003Cbr\u003E\n\u003Col start=\"3\"\u003E\n\u003Cli\u003E给出更多的算法选项。比如求解矩阵的逆矩阵时，提供定义法、LU分解法等不同的算法写成的函数以供调用。\u003C/li\u003E\n\u003C/ol\u003E\n\u003Cbr\u003E"},{"id":"000000000000Delete","pId":"28f1366","name":"Delete","parent":"Matrix Class","order":5,"sort_id":7613881,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#deleting-a-row\"\u003EDeleting a row\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#deleting-a-column\"\u003EDeleting a column\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#deleting-rows\"\u003EDeleting rows\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#deleting-columns\"\u003EDeleting columns\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Cp\u003E    \nTake the matrix mat as example, too.\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003EMatrix mat 3x4\n    [2, 3, 3, 3]\n    [9, 9, 8, 6]\n    [1, 1, 2, 9]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"deleting-a-row\" class=\"anchor\" href=\"#deleting-a-row\"\u003E\u003C/a\u003EDeleting a row\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// deleteRow(int index)\n\n  mat.deleteRow(0);\n  print( mat );\n\n  // Matrix: 1x4\n  // [5.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"deleting-a-column\" class=\"anchor\" href=\"#deleting-a-column\"\u003E\u003C/a\u003EDeleting a column\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// deleteColumn(int index)\n\n  mat.deleteColumn(0);\n  print( mat );\n  \n  // Matrix: 2x3\n  // [2.0, 3.0, 4.0]\n  // [6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"deleting-rows\" class=\"anchor\" href=\"#deleting-rows\"\u003E\u003C/a\u003EDeleting rows\u003C/h4\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003EPS: When deleting multiple rows, the index should be in the order \u003Cstrong\u003Efrom small to large\u003C/strong\u003E\u003C/p\u003E\n\u003C/blockquote\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// deleteRows(List\u0026lt;int\u0026gt; list)\n\n  // First, add a row to mat\n  // Then, delete the 1st and 2nd rows\n  mat.addRow([6, 6, 6, 6], 1);\n  print( mat );\n  mat.deleteRows([0, 1]);\n  print( mat );\n\n  // Matrix: 3x4\n  // [1.0, 2.0, 3.0, 4.0]\n  // [6.0, 6.0, 6.0, 6.0]\n  // [5.0, 6.0, 7.0, 8.0]\n\n  // Matrix: 1x4\n  // [5.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"deleting-columns\" class=\"anchor\" href=\"#deleting-columns\"\u003E\u003C/a\u003EDeleting columns\u003C/h4\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003EPS: When deleting multiple columns, the index should be in the order \u003Cstrong\u003Efrom small to large\u003C/strong\u003E\u003C/p\u003E\n\u003C/blockquote\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// deleteColumns(List\u0026lt;int\u0026gt; list)\n\n  mat.deleteColumns([0, 2]);\n  print( mat );\n\n  // Matrix: 2x2\n  // [2.0, 4.0]\n  // [6.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"000000000000Roadmap","pId":0,"name":"Roadmap","parent":null,"order":5,"sort_id":7550985,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Cp\u003E    We are commited to make Matrices faster, more powerful and more easy-to-use. Thus, if you have some advice or are able to make positive modifications of the code, please contact us and let us know. At the same time, to achieve these goals, we made a roadmap listed below.\u003C/p\u003E\n\u003Chr\u003E\n\u003Col\u003E\n\u003Cli\u003EComplete the relevant contents of basic linear algebra computations, e.g. eigen value and eigen vector.\u003C/li\u003E\n\u003C/ol\u003E\n\u003Cbr\u003E\n\u003Col start=\"2\"\u003E\n\u003Cli\u003EWe plan to provide the float data type as the default data type for vector and matrix in order to reduce memory consumption and improve speed of operations under certain circumstances.\u003C/li\u003E\n\u003C/ol\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003ESince Dart does not provide single-precision floating-point numbers, the implementation of this function will have some difficulties (Expected to be updated in Q2 2023).\u003C/p\u003E\n\u003C/blockquote\u003E\n\u003Cbr\u003E\n\u003Col start=\"3\"\u003E\n\u003Cli\u003EGive more algorithm options. For example, when solving the inverse of a matrix, functions written by different algorithms such as definition method and LU decomposition method are provided for calling.\u003C/li\u003E\n\u003C/ol\u003E\n\u003Cbr\u003E"},{"id":"000000000000支持我们","pId":"a7bbaf9","name":"支持我们","parent":"中文文档","order":5,"sort_id":7563403,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"star我们-\" class=\"anchor\" href=\"#star%E6%88%91%E4%BB%AC-\"\u003E\u003C/a\u003EStar我们 ⭐\u003C/h4\u003E\n\u003Cp\u003E欢迎您进入我们的 \u003Ca href=\"https://github.com/abandoft/matrices\"\u003EGithub\u003C/a\u003E 或 \u003Ca href=\"https://gitee.com/abandoft/matrices\"\u003EGitee\u003C/a\u003E 页面给我们点亮小星星\u003C/p\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"点赞我们-\" class=\"anchor\" href=\"#%E7%82%B9%E8%B5%9E%E6%88%91%E4%BB%AC-\"\u003E\u003C/a\u003E点赞我们 ⍝\u003C/h4\u003E\n\u003Cp\u003E若网络条件允许，您可以进入 \u003Ca href=\"https://pub.dev/packages/matrices\"\u003EPub\u003C/a\u003E 登录您的Google账号给我们点赞(镜像网站不支持点赞)\u003C/p\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"赞助我们-\" class=\"anchor\" href=\"#%E8%B5%9E%E5%8A%A9%E6%88%91%E4%BB%AC-\"\u003E\u003C/a\u003E赞助我们 ❤\u003C/h4\u003E\n\u003Cp\u003E若经济条件允许，您还可以点击 \u003Ca href=\"https://paypal.me/abandoft\"\u003EPayPal\u003C/a\u003E 给我们买杯咖啡\u003C/p\u003E\n\u003Chr\u003E"},{"id":"000000000000删除","pId":"fe761ad","name":"删除","parent":"中文文档/矩阵类Matrix","order":5,"sort_id":7563412,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%88%A0%E9%99%A4%E6%9F%90%E4%B8%80%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E删除某一行元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%88%A0%E9%99%A4%E6%9F%90%E4%B8%80%E5%88%97%E5%85%83%E7%B4%A0\"\u003E删除某一列元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%88%A0%E9%99%A4%E6%9F%90%E5%87%A0%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E删除某几行元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%88%A0%E9%99%A4%E6%9F%90%E5%87%A0%E5%88%97%E5%85%83%E7%B4%A0\"\u003E删除某几列元素\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Cp\u003E       \n同样以mat矩阵作为例子进行演示\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003EMatrix mat 3x4\n    [2, 3, 3, 3]\n    [9, 9, 8, 6]\n    [1, 1, 2, 9]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"删除某一行元素\" class=\"anchor\" href=\"#%E5%88%A0%E9%99%A4%E6%9F%90%E4%B8%80%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E删除某一行元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// deleteRow(int index)\n\n  mat.deleteRow(0);\n  print( mat );\n\n  // Matrix: 1x4\n  // [5.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"删除某一列元素\" class=\"anchor\" href=\"#%E5%88%A0%E9%99%A4%E6%9F%90%E4%B8%80%E5%88%97%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E删除某一列元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// deleteColumn(int index)\n\n  mat.deleteColumn(0);\n  print( mat );\n  \n  // Matrix: 2x3\n  // [2.0, 3.0, 4.0]\n  // [6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"删除某几行元素\" class=\"anchor\" href=\"#%E5%88%A0%E9%99%A4%E6%9F%90%E5%87%A0%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E删除某几行元素\u003C/h4\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003EPS: 删除多行时，应按照索引从小到大的顺序\u003C/p\u003E\n\u003C/blockquote\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// deleteRows(List\u0026lt;int\u0026gt; list)\n\n  // 先增加一行元素\n  // 再删除第0行和第1行\n  mat.addRow([6, 6, 6, 6], 1);\n  print( mat );\n  mat.deleteRows([0, 1]);\n  print( mat );\n\n  // Matrix: 3x4\n  // [1.0, 2.0, 3.0, 4.0]\n  // [6.0, 6.0, 6.0, 6.0]\n  // [5.0, 6.0, 7.0, 8.0]\n\n  // Matrix: 1x4\n  // [5.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"删除某几列元素\" class=\"anchor\" href=\"#%E5%88%A0%E9%99%A4%E6%9F%90%E5%87%A0%E5%88%97%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E删除某几列元素\u003C/h4\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003EPS: 删除多列时，应按照索引从小到大的顺序\u003C/p\u003E\n\u003C/blockquote\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// deleteColumns(List\u0026lt;int\u0026gt; list)\n\n  mat.deleteColumns([0, 2]);\n  print( mat );\n\n  // Matrix: 2x2\n  // [2.0, 4.0]\n  // [6.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"000000000000Help us","pId":0,"name":"Help us","parent":null,"order":6,"sort_id":7549118,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"star-us-\" class=\"anchor\" href=\"#star-us-\"\u003E\u003C/a\u003EStar us ⭐\u003C/h4\u003E\n\u003Cp\u003EYou are welcome to visit our \u003Ca href=\"https://github.com/abandoft/matrices\"\u003EGithub\u003C/a\u003E or \u003Ca href=\"https://gitee.com/abandoft/matrices\"\u003EGitee\u003C/a\u003E pages and give us a star.\u003C/p\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"give-us-a-like-\" class=\"anchor\" href=\"#give-us-a-like-\"\u003E\u003C/a\u003EGive us a like ⍝\u003C/h4\u003E\n\u003Cp\u003EIf network conditions permit, you may visit \u003Ca href=\"https://pub.dev/packages/matrices\"\u003EPub\u003C/a\u003E, log in you Google account and give us a like. (Note: Giving like is not supported for a mirror site.)\u003C/p\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"donate-\" class=\"anchor\" href=\"#donate-\"\u003E\u003C/a\u003EDonate ❤\u003C/h4\u003E\n\u003Cp\u003EIf the financial condition is permitted, you may click \u003Ca href=\"https://paypal.me/abandoft\"\u003EPayPal\u003C/a\u003E and buy us a coffee.\u003C/p\u003E\n\u003Chr\u003E"},{"id":"000000000000Arithmetic","pId":"28f1366","name":"Arithmetic","parent":"Matrix Class","order":6,"sort_id":7613879,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#addition\"\u003EAddition\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#subtraction\"\u003ESubtraction\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#scalar-multiplication\"\u003EScalar Multiplication\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#matrix-product\"\u003EMatrix Product\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"addition\" class=\"anchor\" href=\"#addition\"\u003E\u003C/a\u003EAddition\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6]\n  ]);\n  print( mat + 3 );\n  print( mat + mat );\n\n  // Matrix: 2x3\n  // [4.0, 5.0, 6.0]\n  // [7.0, 8.0, 9.0]\n\n  // Matrix: 2x3\n  // [2.0, 4.0, 6.0]\n  // [8.0, 10.0, 12.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"subtraction\" class=\"anchor\" href=\"#subtraction\"\u003E\u003C/a\u003ESubtraction\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6]\n  ]);\n  var mat1 = Matrix.fromList([\n    [1, 2, 1],\n    [1, 2, 1]\n  ]);\n  print( mat - 3 );\n  print( mat - mat1 );\n\n  // Matrix: 2x3\n  // [-2.0, -1.0, 0.0]\n  // [1.0, 2.0, 3.0]\n\n  // Matrix: 2x3\n  // [0.0, 0.0, 2.0]\n  // [3.0, 3.0, 5.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"scalar-multiplication\" class=\"anchor\" href=\"#scalar-multiplication\"\u003E\u003C/a\u003EScalar Multiplication\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  // Scalar Multiplication (Scalar should be on the right position of the operator *)\n  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6]\n  ]);\n  print( mat * 3 );\n\n  // Matrix: 2x3\n  // [3.0, 6.0, 9.0]\n  // [12.0, 15.0, 18.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"matrix-product\" class=\"anchor\" href=\"#matrix-product\"\u003E\u003C/a\u003EMatrix Product\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6]\n  ]);\n\n  // Matrix Product\n  var multi = Matrix.fromList([\n    [2, 3.5],\n    [1, -2],\n    [-4, 0.5]\n  ]);\n  print( mat * multi );\n\n  // Matrix: 2x2\n  // [-8.0, 1.0]\n  // [-11.0, 7.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"f985969","pId":"a7bbaf9","name":"其他版本","parent":"中文文档","sort_id":7563480,"order":6,"isParent":true,"extname":null,"open":false},{"id":"000000000000四则运算","pId":"fe761ad","name":"四则运算","parent":"中文文档/矩阵类Matrix","order":6,"sort_id":7563413,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%8A%A0%E6%B3%95\"\u003E加法\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%87%8F%E6%B3%95\"\u003E减法\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E6%95%B0%E4%B9%98\"\u003E数乘\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E4%B9%98%E6%B3%95\"\u003E乘法\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"加法\" class=\"anchor\" href=\"#%E5%8A%A0%E6%B3%95\"\u003E\u003C/a\u003E加法\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6]\n  ]);\n  print( mat + 3 );\n  print( mat + mat );\n\n  // Matrix: 2x3\n  // [4.0, 5.0, 6.0]\n  // [7.0, 8.0, 9.0]\n\n  // Matrix: 2x3\n  // [2.0, 4.0, 6.0]\n  // [8.0, 10.0, 12.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"减法\" class=\"anchor\" href=\"#%E5%87%8F%E6%B3%95\"\u003E\u003C/a\u003E减法\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6]\n  ]);\n  var mat1 = Matrix.fromList([\n    [1, 2, 1],\n    [1, 2, 1]\n  ]);\n  print( mat - 3 );\n  print( mat - mat1 );\n\n  // Matrix: 2x3\n  // [-2.0, -1.0, 0.0]\n  // [1.0, 2.0, 3.0]\n\n  // Matrix: 2x3\n  // [0.0, 0.0, 2.0]\n  // [3.0, 3.0, 5.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"数乘\" class=\"anchor\" href=\"#%E6%95%B0%E4%B9%98\"\u003E\u003C/a\u003E数乘\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  // 数乘(数字应在乘号右侧)\n  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6]\n  ]);\n  print( mat * 3 );\n\n  // Matrix: 2x3\n  // [3.0, 6.0, 9.0]\n  // [12.0, 15.0, 18.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"乘法\" class=\"anchor\" href=\"#%E4%B9%98%E6%B3%95\"\u003E\u003C/a\u003E乘法\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6]\n  ]);\n\n  // 矩阵乘法\n  var multi = Matrix.fromList([\n    [2, 3.5],\n    [1, -2],\n    [-4, 0.5]\n  ]);\n  print( mat * multi );\n\n  // Matrix: 2x2\n  // [-8.0, 1.0]\n  // [-11.0, 7.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E"},{"id":"000000000000Matters need attention","pId":"28f1366","name":"Matters need attention","parent":"Matrix Class","order":7,"sort_id":7613883,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Cp\u003E    Vectors have the type of List\u0026lt; double \u0026gt;. If you are using List\u0026lt; int \u0026gt; and List\u0026lt; num \u0026gt;, variable assignment may fail without implicit type cast. All constructors provided by Matrices have no such risk. But if you have defined a List variable and assign it to a Matrix row or column, variable assignment may fail. Examples are as follows:\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  var vec = [6, 6, 6];\n  Vector vec1 = [6, 6, 6];\n  List\u0026lt;double\u0026gt; vec2 = [6, 6, 6];\n\n  // The code listed below will fail to execute.\n  // If you put vec1 or vec2 instead, the code runs normally,\n  // because vec has a type of List\u0026lt;int\u0026gt; rather than List\u0026lt;double\u0026gt;\n  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6],\n    vec\n  ]);\n  print( mat );\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Chr\u003E"},{"id":"5dd5e16","pId":0,"name":"Other Version","parent":"","sort_id":7563394,"order":7,"isParent":true,"extname":null,"open":false},{"id":"000000000000注意事项","pId":"fe761ad","name":"注意事项","parent":"中文文档/矩阵类Matrix","order":7,"sort_id":7563416,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Chr\u003E\n\u003Cp\u003E       向量是List\u0026lt; double \u0026gt;类型。如果您使用了List\u0026lt; int \u0026gt;或List\u0026lt; num \u0026gt;类型，在没有隐式类型转换的情况下，赋值将会失败。使用Matrices提供的所有构造方法均没有这种风险。但如果您先定义了List，然后将其赋值给一个Matrix的行或者列，可能会导致这种风险。示例如下：\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  var vec = [6, 6, 6];\n  Vector vec1 = [6, 6, 6];\n  List\u0026lt;double\u0026gt; vec2 = [6, 6, 6];\n\n  // 以下代码将无法运行\n  // 将vec改为vec1或vec2后，可以运行\n  // 因为vec是List\u0026lt;int\u0026gt;类型，而非List\u0026lt;double\u0026gt;\n  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6],\n    vec\n  ]);\n  print( mat );\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Chr\u003E"},{"id":"a7bbaf9","pId":0,"name":"中文文档","parent":"","sort_id":7563397,"order":8,"isParent":true,"extname":null,"open":false},{"id":"000000000000null","pId":"f985969","name":"null","parent":"中文文档/其他版本","order":8,"sort_id":7590823,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Cp\u003E.keep\u003C/p\u003E"}],"content":{"7613889":"\u003Chr\u003E\n\u003Cp\u003E    SquareMatrix is a subclass of the Matrix class. The instances of this class can use all the fields and methods of the matrix class. At the same time, the SquareMatrix class contains some fields and methods specific to the square matrix, such as creating a square matrix, computing the determinant, inverse matrix, eigenvalues, eigenvectors, etc.\u003C/p\u003E\n\u003Chr\u003E","7563401":"\u003Chr\u003E\n\u003Cp\u003E       在Matrices中，向量即List\u0026lt; double \u0026gt;类型的数据。\u003C/p\u003E\n\u003Cp\u003E       Vector只是List\u0026lt; double \u0026gt;类型的别名。为了防止您创建的List类型变量不能作为向量使用，您可以直接显示地创建向量类型的变量。同时，Matrice提供了一些常用的创建和操作向量类型的方法。\u003C/p\u003E\n\u003Chr\u003E","7563406":"\u003Chr\u003E\n\u003Cp\u003E       SquareMatrix是Matrix类的子类，该类的对象可以使用矩阵类的所有属性和方法。同时，SquareMatrix类包含一些方阵特有的属性和方法，如快速创建一个方阵、求方阵的行列式的值、逆矩阵、特征值、特征向量等。\u003C/p\u003E\n\u003Chr\u003E","7613885":"\u003Chr\u003E\n\u003Cp\u003E    The Matrix class provides common methods of all types of matrices, for exmaple, creating a matrix, indexing and modifying elements, rows and columns, inserting and appending a vector or a matrix, etc. However, the Matrix class does not provide methods specific to square matrices like computing determinant, inverse matrix, eigen values and eigen vectors, etc. In the Matrices library, the vector type is exactly the type of List\u0026lt; double \u0026gt;, and each row of a matrix instance has the type of vector, namely, List\u0026lt; double \u0026gt;. Matrices only allows creating matrix instances with named constructors listed in our docs, and the Matrix() constructor is not allowed to be called while creating a matrix.\u003C/p\u003E\n\u003Chr\u003E","7613887":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-square-matrix\"\u003ECreating a square matrix\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-an-identity-matrix\"\u003ECreating an identity matrix\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-square-matrix-filled-with-0s\"\u003ECreating a square matrix filled with 0’s\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-square-matrix-filled-with-1s\"\u003ECreating a square matrix filled with 1’s\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-square-matrix-filled-with-certain-value\"\u003ECreating a square matrix filled with certain value\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-square-matrix-filled-with-random-values\"\u003ECreating a square matrix filled with random values\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-square-diagonal-matrix-from-list\"\u003ECreating a square diagonal matrix from list\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-square-diagonal-matrix-filled-with-certain-value\"\u003ECreating a square diagonal matrix filled with certain value\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-square-matrix\" class=\"anchor\" href=\"#creating-a-square-matrix\"\u003E\u003C/a\u003ECreating a square matrix\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.fromList(List\u0026lt;List\u0026lt;double\u0026gt;\u0026gt; lists)\n\n  var mat = SquareMatrix.fromList([\n    [2, 3, 3],\n    [1, 2, 9],\n    [9, 8, 6]\n  ]);\n  print( mat );\n\n  // Matrix: 3x3\n  // [6.0, 9.0, 9.0]\n  // [3.0, 6.0, 27.0]\n  // [27.0, 24.0, 18.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-an-identity-matrix\" class=\"anchor\" href=\"#creating-an-identity-matrix\"\u003E\u003C/a\u003ECreating an identity matrix\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  // SquareMatrix.identity(int row)\n\n  var mat = SquareMatrix.identity(3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [1.0, 0.0, 0.0]\n  // [0.0, 1.0, 0.0]\n  // [0.0, 0.0, 1.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-square-matrix-filled-with-0s\" class=\"anchor\" href=\"#creating-a-square-matrix-filled-with-0s\"\u003E\u003C/a\u003ECreating a square matrix filled with 0’s\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.zero(int row)\n\n  var mat = SquareMatrix.zero(3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [0.0, 0.0, 0.0]\n  // [0.0, 0.0, 0.0]\n  // [0.0, 0.0, 0.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-square-matrix-filled-with-1s\" class=\"anchor\" href=\"#creating-a-square-matrix-filled-with-1s\"\u003E\u003C/a\u003ECreating a square matrix filled with 1’s\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.one(int row)\n\n  var mat = SquareMatrix.one(3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [1.0, 1.0, 1.0]\n  // [1.0, 1.0, 1.0]\n  // [1.0, 1.0, 1.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-square-matrix-filled-with-certain-value\" class=\"anchor\" href=\"#creating-a-square-matrix-filled-with-certain-value\"\u003E\u003C/a\u003ECreating a square matrix filled with certain value\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.number(double number, int row)\n\n  var mat = SquareMatrix.number(2, 3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [2.0, 2.0, 2.0]\n  // [2.0, 2.0, 2.0]\n  // [2.0, 2.0, 2.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-square-matrix-filled-with-random-values\" class=\"anchor\" href=\"#creating-a-square-matrix-filled-with-random-values\"\u003E\u003C/a\u003ECreating a square matrix filled with random values\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.random(int row)\n\n  var mat = SquareMatrix.random(3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [0.2666268534804871, 0.607635195280705, 0.581392153915932]\n  // [0.3590813328566256, 0.8098420655296595, 0.015949886001227154]\n  // [0.6670401483574298, 0.3054732396044414, 0.3113168618967712]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-square-diagonal-matrix-from-list\" class=\"anchor\" href=\"#creating-a-square-diagonal-matrix-from-list\"\u003E\u003C/a\u003ECreating a square diagonal matrix from list\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.diagonal(List\u0026lt;double\u0026gt; list)\n\n  var mat = SquareMatrix.diagonal([1,2,3]);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [1.0, 0.0, 0.0]\n  // [0.0, 2.0, 0.0]\n  // [0.0, 0.0, 3.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-square-diagonal-matrix-filled-with-certain-value\" class=\"anchor\" href=\"#creating-a-square-diagonal-matrix-filled-with-certain-value\"\u003E\u003C/a\u003ECreating a square diagonal matrix filled with certain value\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.diagonalFromNumber(double num, int row)\n\n  var mat = SquareMatrix.diagonalFromNumber(2,3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [2.0, 0.0, 0.0]\n  // [0.0, 2.0, 0.0]\n  // [0.0, 0.0, 2.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7613893":"\u003Chr\u003E\n\u003Cp\u003E    In Matrices, Vector is the same as List\u0026lt; double \u0026gt;.\u003C/p\u003E\n\u003Cp\u003E    Vector is only the byname of List\u0026lt; double \u0026gt;. To prevent the List type variable you created from being used as a vector, you can explicitly create a Vector type variable. At the same time, Matrice provides some common methods for creating and manipulating vector types.\u003C/p\u003E\n\u003Chr\u003E","7548897":"\u003Chr\u003E\n\u003Cp\u003E    Matrices is a matrix operations and linear algebra library for Dart. It was developed to provide matrix operations support for projects such as Astable. All operations are currently implemented in Dart language. To use it, you need to import the matrices.dart file. Also, before using Matrices, you need to understand the concepts related to linear algebra.\u003C/p\u003E\n\u003Cp\u003E    Linear algebra is a branch of mathematics that deals with vectors, linear spaces, linear transformations and finite dimensional systems of linear equations. Linear algebra deals with linear relations. A linear relationship means that the relationship between mathematical objects is expressed in a one-time form. Since nonlinear models in scientific research can often be approximated as linear models, linear algebra is widely used in the natural and social sciences.\u003C/p\u003E\n\u003Chr\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003EGrayscale releases are marked with '!', unimplemented functions are marked with '*'\u003Cbr\u003E\nAPI compatibility breaks relative to the previous major version are marked with ⚠\u003C/p\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003EA major version means that the number in position b of version number a.b.c has changed.\u003Cbr\u003E\nIf the number a has changed, it means that the refactored version has been updated (extensive code rewriting and compatibility breaking).\u003Cbr\u003E\nIf c changes, it means a minor version has been updated (no major feature updates and compatibility breaks).\u003C/p\u003E\n\u003C/blockquote\u003E\n\u003C/blockquote\u003E","7563398":"\u003Chr\u003E\n\u003Cp\u003E       Matrices是一个Dart语言的矩阵运算和线性代数库。开发它的目的是为Astable等项目提供矩阵运算支持。目前所有运算均使用Dart语言实现。使用时需要导入matrices.dart文件。另外，在使用Matrices之前，您需要了解线性代数的相关概念。\u003Cbr\u003E\n       线性代数是数学的一个分支，它的研究对象是向量、线性空间、线性变换和有限维的线性方程组。线性代数主要处理线性关系问题。线性关系意即数学对象之间的关系是以一次形式来表达的。由于科学研究中的非线性模型通常可以被近似为线性模型，因此线性代数被广泛地应用于自然科学和社会科学中。\u003C/p\u003E\n\u003Chr\u003E\n\u003Cp\u003E使用说明：\u003C/p\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003E灰度功能使用 ! 标记，未实现功能使用 * 进行标记\u003Cbr\u003E\n相对于上一个大版本，API发生兼容性破坏的地方将使用⚠进行标记\u003C/p\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003E大版本指版本号a.b.c中的b位置的数字发生了变化\u003Cbr\u003E\n若a发生变化则代表更新了重构版本(大量代码重写和兼容性破坏)\u003Cbr\u003E\n若c发生变化则代表更新了小版本(不会有重大功能更新和兼容性破坏)\u003C/p\u003E\n\u003C/blockquote\u003E\n\u003C/blockquote\u003E","7563400":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#%E9%80%9F%E8%A7%88\"\u003E速览\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%88%9B%E5%BB%BA%E5%90%91%E9%87%8F\"\u003E创建向量\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E5%90%91%E9%87%8F%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC\"\u003E获取向量元素的值\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E4%BF%AE%E6%94%B9%E5%90%91%E9%87%8F%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC\"\u003E修改向量元素的值\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E7%94%9F%E6%88%90%E5%85%A8%E4%B8%BA%E6%9F%90%E4%B8%AA%E6%95%B0%E7%9A%84%E5%90%91%E9%87%8F\"\u003E生成全为某个数的向量\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E7%94%9F%E6%88%90%E5%85%A8%E4%B8%BA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%9A%84%E5%90%91%E9%87%8F\"\u003E生成全为随机数的向量\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E6%8C%89%E7%BB%99%E5%AE%9A%E7%9A%84%E6%AD%A5%E9%95%BF%E7%94%9F%E6%88%90%E5%90%91%E9%87%8F\"\u003E按给定的步长生成向量\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"创建向量\" class=\"anchor\" href=\"#%E5%88%9B%E5%BB%BA%E5%90%91%E9%87%8F\"\u003E\u003C/a\u003E创建向量\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// 创建向量类型的变量\n  Vector vec = [1, 2, 3];\n  print( vec );    \n\n  // [1.0, 2.0, 3.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取向量元素的值\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E5%90%91%E9%87%8F%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC\"\u003E\u003C/a\u003E获取向量元素的值\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  Vector vec = [1, 2, 3];\n  print( vec[1] );    \n\n  // 2.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"修改向量元素的值\" class=\"anchor\" href=\"#%E4%BF%AE%E6%94%B9%E5%90%91%E9%87%8F%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC\"\u003E\u003C/a\u003E修改向量元素的值\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  Vector vec = [1, 2, 3];\n  vec[1] = 6;\n  print( vec[1] );    \n    \n  // 6.0\n\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"生成全为某个数的向量\" class=\"anchor\" href=\"#%E7%94%9F%E6%88%90%E5%85%A8%E4%B8%BA%E6%9F%90%E4%B8%AA%E6%95%B0%E7%9A%84%E5%90%91%E9%87%8F\"\u003E\u003C/a\u003E生成全为某个数的向量\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Vector numberVector(int length, double seed)\n\n  var vec = numberVector(4, 6);\n  print( vec );\n\n  // [6.0, 6.0, 6.0, 6.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"生成全为随机数的向量\" class=\"anchor\" href=\"#%E7%94%9F%E6%88%90%E5%85%A8%E4%B8%BA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%9A%84%E5%90%91%E9%87%8F\"\u003E\u003C/a\u003E生成全为随机数的向量\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Vector randomVector(int length)\n\n  var vec = randomVector(2);\n  print( vec );\n\n  // [0.29616116997641384, 0.1199242872392301]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"按给定的步长生成向量\" class=\"anchor\" href=\"#%E6%8C%89%E7%BB%99%E5%AE%9A%E7%9A%84%E6%AD%A5%E9%95%BF%E7%94%9F%E6%88%90%E5%90%91%E9%87%8F\"\u003E\u003C/a\u003E按给定的步长生成向量\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Vector rangeVector(num start, num end, {num step = 1})\n\n  /// 生成从start到end的步长为step的向量，默认步长为1\n  var vec = rangeVector(2, 6, step: 2)\n  print( vec );\n  \n  // [2.0, 4.0, 6.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7563402":"\u003Chr\u003E\n\u003Cp\u003E       Vector是List\u0026lt; double \u0026gt;类型的别名，因此可以使用List的所有属性和方法，也可以将Vector完全当作List来使用。在Matrices中，出于简化数据类型的目的，目前我们没有定制一个Vector类，而是借用了已有的数据类型。\u003C/p\u003E\n\u003Chr\u003E","7563405":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%88%9B%E5%BB%BA%E6%96%B9%E9%98%B5\"\u003E创建方阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%88%9B%E5%BB%BA%E5%8D%95%E4%BD%8D%E9%98%B5\"\u003E创建单位阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA0%E7%9A%84%E6%96%B9%E9%98%B5\"\u003E元素全为0的方阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA1%E7%9A%84%E6%96%B9%E9%98%B5\"\u003E元素全为1的方阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA%E6%9F%90%E6%95%B0%E5%AD%97%E7%9A%84%E6%96%B9%E9%98%B5\"\u003E元素全为某数字的方阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%9A%84%E6%96%B9%E9%98%B5\"\u003E元素全为随机数的方阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E4%B8%BB%E5%AF%B9%E8%A7%92%E7%BA%BF%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC%E4%B8%BA%E6%9F%90%E6%95%B0%E7%BB%84%E7%9A%84%E5%AF%B9%E8%A7%92%E9%98%B5\"\u003E主对角线元素的值为某数组的对角阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E4%B8%BB%E5%AF%B9%E8%A7%92%E7%BA%BF%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC%E4%B8%BA%E6%9F%90%E6%95%B0%E5%AD%97%E7%9A%84%E5%AF%B9%E8%A7%92%E9%98%B5\"\u003E主对角线元素的值为某数字的对角阵\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"创建方阵\" class=\"anchor\" href=\"#%E5%88%9B%E5%BB%BA%E6%96%B9%E9%98%B5\"\u003E\u003C/a\u003E创建方阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.fromList(List\u0026lt;List\u0026lt;double\u0026gt;\u0026gt; lists)\n\n  var mat = SquareMatrix.fromList([\n    [2, 3, 3],\n    [1, 2, 9],\n    [9, 8, 6]\n  ]);\n  print( mat );\n\n  // Matrix: 3x3\n  // [6.0, 9.0, 9.0]\n  // [3.0, 6.0, 27.0]\n  // [27.0, 24.0, 18.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"创建单位阵\" class=\"anchor\" href=\"#%E5%88%9B%E5%BB%BA%E5%8D%95%E4%BD%8D%E9%98%B5\"\u003E\u003C/a\u003E创建单位阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  // SquareMatrix.identity(int row)\n\n  var mat = SquareMatrix.identity(3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [1.0, 0.0, 0.0]\n  // [0.0, 1.0, 0.0]\n  // [0.0, 0.0, 1.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素全为0的方阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA0%E7%9A%84%E6%96%B9%E9%98%B5\"\u003E\u003C/a\u003E元素全为0的方阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.zero(int row)\n\n  var mat = SquareMatrix.zero(3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [0.0, 0.0, 0.0]\n  // [0.0, 0.0, 0.0]\n  // [0.0, 0.0, 0.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素全为1的方阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA1%E7%9A%84%E6%96%B9%E9%98%B5\"\u003E\u003C/a\u003E元素全为1的方阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.one(int row)\n\n  var mat = SquareMatrix.one(3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [1.0, 1.0, 1.0]\n  // [1.0, 1.0, 1.0]\n  // [1.0, 1.0, 1.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素全为某数字的方阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA%E6%9F%90%E6%95%B0%E5%AD%97%E7%9A%84%E6%96%B9%E9%98%B5\"\u003E\u003C/a\u003E元素全为某数字的方阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.number(double number, int row)\n\n  var mat = SquareMatrix.number(2, 3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [2.0, 2.0, 2.0]\n  // [2.0, 2.0, 2.0]\n  // [2.0, 2.0, 2.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素全为随机数的方阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%9A%84%E6%96%B9%E9%98%B5\"\u003E\u003C/a\u003E元素全为随机数的方阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.random(int row)\n\n  var mat = SquareMatrix.random(3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [0.2666268534804871, 0.607635195280705, 0.581392153915932]\n  // [0.3590813328566256, 0.8098420655296595, 0.015949886001227154]\n  // [0.6670401483574298, 0.3054732396044414, 0.3113168618967712]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"主对角线元素的值为某数组的对角阵\" class=\"anchor\" href=\"#%E4%B8%BB%E5%AF%B9%E8%A7%92%E7%BA%BF%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC%E4%B8%BA%E6%9F%90%E6%95%B0%E7%BB%84%E7%9A%84%E5%AF%B9%E8%A7%92%E9%98%B5\"\u003E\u003C/a\u003E主对角线元素的值为某数组的对角阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.diagonal(List\u0026lt;double\u0026gt; list)\n\n  var mat = SquareMatrix.diagonal([1,2,3]);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [1.0, 0.0, 0.0]\n  // [0.0, 2.0, 0.0]\n  // [0.0, 0.0, 3.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"主对角线元素的值为某数字的对角阵\" class=\"anchor\" href=\"#%E4%B8%BB%E5%AF%B9%E8%A7%92%E7%BA%BF%E5%85%83%E7%B4%A0%E7%9A%84%E5%80%BC%E4%B8%BA%E6%9F%90%E6%95%B0%E5%AD%97%E7%9A%84%E5%AF%B9%E8%A7%92%E9%98%B5\"\u003E\u003C/a\u003E主对角线元素的值为某数字的对角阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix.diagonalFromNumber(double num, int row)\n\n  var mat = SquareMatrix.diagonalFromNumber(2,3);\n  print( mat );\n\n  // SquareMatrix: 3x3\n  // [2.0, 0.0, 0.0]\n  // [0.0, 2.0, 0.0]\n  // [0.0, 0.0, 2.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7563407":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\n\u003Ca href=\"#%E8%A1%8C%E5%88%97%E5%BC%8F%E7%9A%84%E5%80%BC\"\u003E行列式的值\u003C/a\u003E⚠\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#%E9%80%86%E7%9F%A9%E9%98%B5\"\u003E逆矩阵\u003C/a\u003E⚠\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#%E7%89%B9%E5%BE%81%E5%80%BC\"\u003E特征值\u003C/a\u003E *\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#%E7%89%B9%E5%BE%81%E5%90%91%E9%87%8F\"\u003E特征向量\u003C/a\u003E *\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"行列式的值\" class=\"anchor\" href=\"#%E8%A1%8C%E5%88%97%E5%BC%8F%E7%9A%84%E5%80%BC\"\u003E\u003C/a\u003E行列式的值\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// double determinant()\n\n  var mat = SquareMatrix.fromList([\n    [1, 2],\n    [1, 1]\n  ]);\n  print( mat.determinant() );\n\n  // -1.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"逆矩阵\" class=\"anchor\" href=\"#%E9%80%86%E7%9F%A9%E9%98%B5\"\u003E\u003C/a\u003E逆矩阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix inverse()\n\n  var mat = SquareMatrix.fromList([\n    [1, 2],\n    [1, 1]\n  ]);\n  print( mat.inverse() );\n\n  // SquareMatrix: 2x2\n  // [1.0, -1.0]\n  // [1.0, -1.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"特征值\" class=\"anchor\" href=\"#%E7%89%B9%E5%BE%81%E5%80%BC\"\u003E\u003C/a\u003E特征值\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// double eigenvalue()\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"特征向量\" class=\"anchor\" href=\"#%E7%89%B9%E5%BE%81%E5%90%91%E9%87%8F\"\u003E\u003C/a\u003E特征向量\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix eigenvector()\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7563408":"\u003Chr\u003E\n\u003Cp\u003E       特征值和特征向量当前版本暂未提供。另外，求解行列式、逆矩阵等将会提供多种方法可供选择。以上内容即将更新，敬请期待。\u003C/p\u003E\n\u003Chr\u003E","7563417":"\u003Chr\u003E\n\u003Cp\u003E       Matrix类里提供了所有类型的矩阵共有的方法，如创建一般矩阵、查询矩阵的元素或某行某列并对其进行修改，拼接向量或矩阵到原矩阵等。但是，Matrix类未提供方阵特有的方法，比如求矩阵行列式的值、求逆矩阵、求特征值等。在Matrices中，向量即List\u0026lt; double \u0026gt; 类型，并且矩阵的每一行都是一个向量。Matrices只允许使用文档里提供的命名构造方法创建矩阵，禁止使用Matrix()构造方法。\u003C/p\u003E\n\u003Chr\u003E","7613880":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-matrix\"\u003ECreating a matrix\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-matrix-filled-with-0s\"\u003ECreating a matrix filled with 0’s\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-matrix-filled-with-1s\"\u003ECreating a matrix filled with 1’s\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-matrix-filled-with-certain-value\"\u003ECreating a matrix filled with certain value\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-matrix-from-a-flattened-list\"\u003ECreating a matrix from a flattened list\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-matrix-filled-with-random-values\"\u003ECreating a matrix filled with random values\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-matrix\" class=\"anchor\" href=\"#creating-a-matrix\"\u003E\u003C/a\u003ECreating a matrix\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.fromList(List\u0026lt;List\u0026lt;double\u0026gt;\u0026gt; lists)\n\n  var mat = Matrix.fromList([\n    [1, 2, 3, 4],\n    [5, 6, 7, 8]\n  ]);\n  print( mat );\n\n  // Matrix: 2x4\n  // [1.0, 2.0, 3.0, 4.0]\n  // [5.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-matrix-filled-with-0s\" class=\"anchor\" href=\"#creating-a-matrix-filled-with-0s\"\u003E\u003C/a\u003ECreating a matrix filled with 0’s\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.zero(int row, int column)\n\n  var mat = Matrix.zero(2, 3);\n  print( mat );\n\n  // Matrix: 2x3\n  // [0.0, 0.0, 0.0]\n  // [0.0, 0.0, 0.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-matrix-filled-with-1s\" class=\"anchor\" href=\"#creating-a-matrix-filled-with-1s\"\u003E\u003C/a\u003ECreating a matrix filled with 1’s\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.one(int row, int column)\n\n  var mat = Matrix.one(2, 3);\n  print( mat );\n  \n  // Matrix: 2x3\n  // [1.0, 1.0, 1.0]\n  // [1.0, 1.0, 1.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-matrix-filled-with-certain-value\" class=\"anchor\" href=\"#creating-a-matrix-filled-with-certain-value\"\u003E\u003C/a\u003ECreating a matrix filled with certain value\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.number(double number, int row, int column)\n\n  var mat = Matrix.number(9, 2, 3);\n  print( mat );\n  \n  // Matrix: 2x3\n  // [9.0, 9.0, 9.0]\n  // [9.0, 9.0, 9.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-matrix-from-a-flattened-list\" class=\"anchor\" href=\"#creating-a-matrix-from-a-flattened-list\"\u003E\u003C/a\u003ECreating a matrix from a flattened list\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  // Matrix.fromFlattenedList(List\u0026lt;double\u0026gt; list, int row, int column)\n  // If the length of the flattened list is smaller than the expected matrix size,\n  // zeros will be filled in the vacant position.\n  \n  var mat1 = Matrix.fromFlattenedList([1, 2, 3, 4], 2, 2);\n  var mat2 = Matrix.fromFlattenedList([1, 2, 3, 4], 2, 3);\n  print(mat1);\n  print(mat2);\n\n  // Matrix: 2x2\n  // [1.0, 2.0]\n  // [3.0, 4.0]\n\n  // Matrix: 2x3\n  // [1.0, 2.0, 3.0]\n  // [4.0, 0.0, 0.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-matrix-filled-with-random-values\" class=\"anchor\" href=\"#creating-a-matrix-filled-with-random-values\"\u003E\u003C/a\u003ECreating a matrix filled with random values\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.random(int row, int column)\n\n  var mat = Matrix.random(2, 3);\n  print( mat );\n  \n  // Matrix: 2x3\n  // [0.38224693703597046, 0.5412146597032305, 0.6424342222644003]\n  // [0.8491145735932242, 0.6236773300386973, 0.25269555696856316]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7590817":"\u003Cp\u003E.keep\u003C/p\u003E","7613891":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-vector\"\u003ECreating a vector\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#indexing-a-vector-element\"\u003EIndexing a vector element\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#modifying-a-vector-element\"\u003EModifying a vector element\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-vector-filled-with-certain-value\"\u003ECreating a vector filled with certain value\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-vector-filled-with-random-values\"\u003ECreating a vector filled with random values\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#creating-a-vector-by-given-step\"\u003ECreating a vector by given step\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-vector\" class=\"anchor\" href=\"#creating-a-vector\"\u003E\u003C/a\u003ECreating a vector\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Create a vector with type Vector\n  Vector vec = [1, 2, 3];\n  print( vec );    \n\n  // [1.0, 2.0, 3.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"indexing-a-vector-element\" class=\"anchor\" href=\"#indexing-a-vector-element\"\u003E\u003C/a\u003EIndexing a vector element\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  Vector vec = [1, 2, 3];\n  print( vec[1] );    \n\n  // 2.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"modifying-a-vector-element\" class=\"anchor\" href=\"#modifying-a-vector-element\"\u003E\u003C/a\u003EModifying a vector element\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  Vector vec = [1, 2, 3];\n  vec[1] = 6;\n  print( vec[1] );    \n    \n  // 6.0\n\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-vector-filled-with-certain-value\" class=\"anchor\" href=\"#creating-a-vector-filled-with-certain-value\"\u003E\u003C/a\u003ECreating a vector filled with certain value\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Vector numberVector(int length, double seed)\n\n  var vec = numberVector(4, 6);\n  print( vec );\n\n  // [6.0, 6.0, 6.0, 6.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-vector-filled-with-random-values\" class=\"anchor\" href=\"#creating-a-vector-filled-with-random-values\"\u003E\u003C/a\u003ECreating a vector filled with random values\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Vector randomVector(int length)\n\n  var vec = randomVector(2);\n  print( vec );\n\n  // [0.29616116997641384, 0.1199242872392301]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"creating-a-vector-by-given-step\" class=\"anchor\" href=\"#creating-a-vector-by-given-step\"\u003E\u003C/a\u003ECreating a vector by given step\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Vector rangeVector(num start, num end, {num step = 1})\n\n  /// Creating a vector from start parameter to end parameter by given step (1 by default)\n  var vec = rangeVector(2, 6, step: 2)\n  print( vec );\n  \n  // [2.0, 4.0, 6.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7563411":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%88%9B%E5%BB%BA%E7%9F%A9%E9%98%B5\"\u003E创建矩阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA0%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E元素全为0的矩阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA1%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E元素全为1的矩阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA%E6%9F%90%E6%95%B0%E5%AD%97%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E元素全为某数字的矩阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E4%B8%BA%E6%9F%90%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E元素为某个数组的矩阵\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E元素全为随机数的矩阵\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"创建矩阵\" class=\"anchor\" href=\"#%E5%88%9B%E5%BB%BA%E7%9F%A9%E9%98%B5\"\u003E\u003C/a\u003E创建矩阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.fromList(List\u0026lt;List\u0026lt;double\u0026gt;\u0026gt; lists)\n\n  var mat = Matrix.fromList([\n    [1, 2, 3, 4],\n    [5, 6, 7, 8]\n  ]);\n  print( mat );\n\n  // Matrix: 2x4\n  // [1.0, 2.0, 3.0, 4.0]\n  // [5.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素全为0的矩阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA0%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E\u003C/a\u003E元素全为0的矩阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.zero(int row, int column)\n\n  var mat = Matrix.zero(2, 3);\n  print( mat );\n\n  // Matrix: 2x3\n  // [0.0, 0.0, 0.0]\n  // [0.0, 0.0, 0.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素全为1的矩阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA1%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E\u003C/a\u003E元素全为1的矩阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.one(int row, int column)\n\n  var mat = Matrix.one(2, 3);\n  print( mat );\n  \n  // Matrix: 2x3\n  // [1.0, 1.0, 1.0]\n  // [1.0, 1.0, 1.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素全为某数字的矩阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA%E6%9F%90%E6%95%B0%E5%AD%97%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E\u003C/a\u003E元素全为某数字的矩阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.number(double number, int row, int column)\n\n  var mat = Matrix.number(9, 2, 3);\n  print( mat );\n  \n  // Matrix: 2x3\n  // [9.0, 9.0, 9.0]\n  // [9.0, 9.0, 9.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素为某个数组的矩阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E4%B8%BA%E6%9F%90%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E\u003C/a\u003E元素为某个数组的矩阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  // Matrix.fromFlattenedList(List\u0026lt;double\u0026gt; list, int row, int column)\n  // 如果数组元素的数量不足，则用0补全矩阵\n  \n  var mat1 = Matrix.fromFlattenedList([1, 2, 3, 4], 2, 2);\n  var mat2 = Matrix.fromFlattenedList([1, 2, 3, 4], 2, 3);\n  print(mat1);\n  print(mat2);\n\n  // Matrix: 2x2\n  // [1.0, 2.0]\n  // [3.0, 4.0]\n\n  // Matrix: 2x3\n  // [1.0, 2.0, 3.0]\n  // [4.0, 0.0, 0.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"元素全为随机数的矩阵\" class=\"anchor\" href=\"#%E5%85%83%E7%B4%A0%E5%85%A8%E4%B8%BA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%9A%84%E7%9F%A9%E9%98%B5\"\u003E\u003C/a\u003E元素全为随机数的矩阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix.random(int row, int column)\n\n  var mat = Matrix.random(2, 3);\n  print( mat );\n  \n  // Matrix: 2x3\n  // [0.38224693703597046, 0.5412146597032305, 0.6424342222644003]\n  // [0.8491145735932242, 0.6236773300386973, 0.25269555696856316]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7613886":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#indexing-a-matrix-element\"\u003EIndexing a matrix element\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#number-of-rows\"\u003ENumber of rows\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#number-of-columns\"\u003ENumber of columns\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#total-number-of-elements\"\u003ETotal number of elements\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#maximum-of-elements\"\u003EMaximum of elements\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#minimum-of-elements\"\u003EMinimum of elements\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#slicing-a-row\"\u003ESlicing a row\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#slicing-a-column\"\u003ESlicing a column\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#transposing\"\u003ETransposing\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#row-echelon-form\"\u003ERow Echelon Form\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#rank\"\u003ERank\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#cropping-to-squarematrix\"\u003ECropping to squarematrix\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Cp\u003E    \nTake the matrix mat as example, too.\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003EMatrix mat 2x4\n    [1, 2, 3, 4]\n    [5, 6, 7, 8]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"indexing-a-matrix-element\" class=\"anchor\" href=\"#indexing-a-matrix-element\"\u003E\u003C/a\u003EIndexing a matrix element\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat[1][2] );\n\n  // 7.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"number-of-rows\" class=\"anchor\" href=\"#number-of-rows\"\u003E\u003C/a\u003ENumber of rows\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.rowCount );\n\n  // 2\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"number-of-columns\" class=\"anchor\" href=\"#number-of-columns\"\u003E\u003C/a\u003ENumber of columns\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.columnCount );\n\n  // 4\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"total-number-of-elements\" class=\"anchor\" href=\"#total-number-of-elements\"\u003E\u003C/a\u003ETotal number of elements\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.count );\n\n  // 8\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"maximum-of-elements\" class=\"anchor\" href=\"#maximum-of-elements\"\u003E\u003C/a\u003EMaximum of elements\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.max );\n\n  // 8.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"minimum-of-elements\" class=\"anchor\" href=\"#minimum-of-elements\"\u003E\u003C/a\u003EMinimum of elements\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.min );\n\n  // 1.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"slicing-a-row\" class=\"anchor\" href=\"#slicing-a-row\"\u003E\u003C/a\u003ESlicing a row\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// List\u0026lt;double\u0026gt; row(int row)\n  print( mat.row(0) );\n\n  // An easier slicing method\n  print( mat[0] );\n\n  // [1.0, 2.0, 3.0, 4.0]\n  // [1.0, 2.0, 3.0, 4.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"slicing-a-column\" class=\"anchor\" href=\"#slicing-a-column\"\u003E\u003C/a\u003ESlicing a column\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// List\u0026lt;double\u0026gt; column(int column)\n  print( mat.column(0) );\n\n  // Here, we also provide an easier slicing method for columns\n  // Add a minus before real column index to slice column (except the 1st column)\n\n  // Slicing the 1st column\n  print( mat[''] );\n  // Slicing the 2nd column\n  print( mat[-1] );\n\n  // [1.0, 5.0]\n  // [1.0, 5.0]\n  // [2.0, 6.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"transposing\" class=\"anchor\" href=\"#transposing\"\u003E\u003C/a\u003ETransposing\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.transpose );\n\n  // Matrix: 4x2\n  // [1.0, 5.0]\n  // [2.0, 6.0]\n  // [3.0, 7.0]\n  // [4.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"row-echelon-form\" class=\"anchor\" href=\"#row-echelon-form\"\u003E\u003C/a\u003ERow Echelon Form\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.rowEchelonForm );\n\n  // Matrix: 2x4\n  // [1.0, 0.0, -1.00000, -2.00000]\n  // [0.0, 1.0, 2.00000, 3.00000]\n\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"rank\" class=\"anchor\" href=\"#rank\"\u003E\u003C/a\u003ERank\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.rank );\n\n  // 2\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"cropping-to-squarematrix\" class=\"anchor\" href=\"#cropping-to-squarematrix\"\u003E\u003C/a\u003ECropping to squarematrix\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.square );\n\n  // SquareMatrix: 2x2\n  // [1.0, 2.0]\n  // [5.0, 6.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7613890":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\n\u003Ca href=\"#determinant\"\u003EDeterminant\u003C/a\u003E⚠\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#inverse-matrix\"\u003EInverse Matrix\u003C/a\u003E⚠\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#eigen-value\"\u003EEigen value\u003C/a\u003E *\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#eigen-vector\"\u003EEigen vector\u003C/a\u003E *\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"determinant\" class=\"anchor\" href=\"#determinant\"\u003E\u003C/a\u003EDeterminant\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// double determinant()\n\n  var mat = SquareMatrix.fromList([\n    [1, 2],\n    [1, 1]\n  ]);\n  print( mat.determinant() );\n\n  // -1.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"inverse-matrix\" class=\"anchor\" href=\"#inverse-matrix\"\u003E\u003C/a\u003EInverse Matrix\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// SquareMatrix inverse()\n\n  var mat = SquareMatrix.fromList([\n    [1, 2],\n    [1, 1]\n  ]);\n  print( mat.inverse() );\n\n  // SquareMatrix: 2x2\n  // [1.0, -1.0]\n  // [1.0, -1.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"eigen-value\" class=\"anchor\" href=\"#eigen-value\"\u003E\u003C/a\u003EEigen value\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// double eigenvalue()\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"eigen-vector\" class=\"anchor\" href=\"#eigen-vector\"\u003E\u003C/a\u003EEigen vector\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// Matrix eigenvector()\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7613892":"\u003Chr\u003E\n\u003Cp\u003E    The Vector type is byname of List\u0026lt; double \u0026gt; type, thus, you are able to access all fields and call all methods provided by List class, you can also use Vector as a List. In Matrices, for the purpose of simplifying data types, we have not customized a Vector class, but borrowed existing dart data types.\u003C/p\u003E\n\u003Chr\u003E","7563415":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E6%9F%90%E4%B8%AA%E5%85%83%E7%B4%A0\"\u003E获取某个元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E8%A1%8C%E6%95%B0\"\u003E获取矩阵的行数\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E5%88%97%E6%95%B0\"\u003E获取矩阵的列数\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E5%85%83%E7%B4%A0%E6%80%BB%E6%95%B0\"\u003E获取矩阵的元素总数\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E5%85%83%E7%B4%A0%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC\"\u003E获取矩阵的元素的最大值\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E5%85%83%E7%B4%A0%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC\"\u003E获取矩阵的元素的最小值\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E6%9F%90%E4%B8%80%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E获取某一行元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E8%8E%B7%E5%8F%96%E6%9F%90%E4%B8%80%E5%88%97%E5%85%83%E7%B4%A0\"\u003E获取某一列元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#%E8%BD%AC%E7%BD%AE%E7%9F%A9%E9%98%B5\"\u003E转置矩阵\u003C/a\u003E⚠\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#%E8%A1%8C%E9%98%B6%E6%A2%AF%E5%BD%A2\"\u003E行阶梯形\u003C/a\u003E⚠\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#%E7%9F%A9%E9%98%B5%E7%9A%84%E7%A7%A9\"\u003E矩阵的秩\u003C/a\u003E⚠\u003C/li\u003E\n\u003Cli\u003E\n\u003Ca href=\"#%E6%88%AA%E5%8F%96%E7%9F%A9%E9%98%B5%E4%B8%BA%E6%96%B9%E9%98%B5\"\u003E截取矩阵为方阵\u003C/a\u003E⚠\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Cp\u003E       \n以mat矩阵作为例子进行演示\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003EMatrix mat 2x4\n    [1, 2, 3, 4]\n    [5, 6, 7, 8]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取某个元素\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E6%9F%90%E4%B8%AA%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E获取某个元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat[1][2] );\n\n  // 7.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取矩阵的行数\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E8%A1%8C%E6%95%B0\"\u003E\u003C/a\u003E获取矩阵的行数\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.rowCount );\n\n  // 2\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取矩阵的列数\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E5%88%97%E6%95%B0\"\u003E\u003C/a\u003E获取矩阵的列数\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.columnCount );\n\n  // 4\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取矩阵的元素总数\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E5%85%83%E7%B4%A0%E6%80%BB%E6%95%B0\"\u003E\u003C/a\u003E获取矩阵的元素总数\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.count );\n\n  // 8\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取矩阵的元素的最大值\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E5%85%83%E7%B4%A0%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC\"\u003E\u003C/a\u003E获取矩阵的元素的最大值\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.max );\n\n  // 8.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取矩阵的元素的最小值\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E7%9F%A9%E9%98%B5%E7%9A%84%E5%85%83%E7%B4%A0%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC\"\u003E\u003C/a\u003E获取矩阵的元素的最小值\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.min );\n\n  // 1.0\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取某一行元素\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E6%9F%90%E4%B8%80%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E获取某一行元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// List\u0026lt;double\u0026gt; row(int row)\n  print( mat.row(0) );\n\n  // 下面是简单写法\n  print( mat[0] );\n\n  // [1.0, 2.0, 3.0, 4.0]\n  // [1.0, 2.0, 3.0, 4.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"获取某一列元素\" class=\"anchor\" href=\"#%E8%8E%B7%E5%8F%96%E6%9F%90%E4%B8%80%E5%88%97%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E获取某一列元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// List\u0026lt;double\u0026gt; column(int column)\n  print( mat.column(0) );\n\n  // 也提供了一种简单写法\n  // 除第0列外，去掉负号就是列的实际索引\n\n  // 获取第0列元素\n  print( mat[''] );\n  // 获取第1列元素\n  print( mat[-1] );\n\n  // [1.0, 5.0]\n  // [1.0, 5.0]\n  // [2.0, 6.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"转置矩阵\" class=\"anchor\" href=\"#%E8%BD%AC%E7%BD%AE%E7%9F%A9%E9%98%B5\"\u003E\u003C/a\u003E转置矩阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.transpose );\n\n  // Matrix: 4x2\n  // [1.0, 5.0]\n  // [2.0, 6.0]\n  // [3.0, 7.0]\n  // [4.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"行阶梯形\" class=\"anchor\" href=\"#%E8%A1%8C%E9%98%B6%E6%A2%AF%E5%BD%A2\"\u003E\u003C/a\u003E行阶梯形\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.rowEchelonForm );\n\n  // Matrix: 2x4\n  // [1.0, 0.0, -1.00000, -2.00000]\n  // [0.0, 1.0, 2.00000, 3.00000]\n\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"矩阵的秩\" class=\"anchor\" href=\"#%E7%9F%A9%E9%98%B5%E7%9A%84%E7%A7%A9\"\u003E\u003C/a\u003E矩阵的秩\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.rank );\n\n  // 2\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"截取矩阵为方阵\" class=\"anchor\" href=\"#%E6%88%AA%E5%8F%96%E7%9F%A9%E9%98%B5%E4%B8%BA%E6%96%B9%E9%98%B5\"\u003E\u003C/a\u003E截取矩阵为方阵\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  print( mat.square );\n\n  // SquareMatrix: 2x2\n  // [1.0, 2.0]\n  // [5.0, 6.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7613884":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#modify-an-element\"\u003EModify an element\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#modify-a-row\"\u003EModify a row\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#modify-a-column\"\u003EModify a column\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Cp\u003E    \nTake the matrix mat as example, too.\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003EMatrix mat 2x4\n    [1, 2, 3, 4]\n    [5, 6, 7, 8]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"modify-an-element\" class=\"anchor\" href=\"#modify-an-element\"\u003E\u003C/a\u003EModify an element\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  mat[0][0] = 6;\n  print( mat[0] );\n\n  // [6.0, 2.0, 3.0, 4.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"modify-a-row\" class=\"anchor\" href=\"#modify-a-row\"\u003E\u003C/a\u003EModify a row\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// setRow(List\u0026lt;double\u0026gt; list, int row)\n  mat.setRow([6, 6, 6, 6], 0);\n  print( mat[0] );\n\n  // [6.0, 6.0, 6.0, 6.0]\n\n  // A eaiser way to modify a row\n  mat[0] = [8, 8, 8, 8];\n  print( mat[0] );\n\n  // [8.0, 8.0, 8.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"modify-a-column\" class=\"anchor\" href=\"#modify-a-column\"\u003E\u003C/a\u003EModify a column\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// setColumn(List\u0026lt;double\u0026gt; list, int column)\n  mat.setColumn([6, 6], 0);\n  print( mat );\n\n  // Matrix: 2x4\n  // [6.0, 2.0, 3.0, 4.0]\n  // [6.0, 6.0, 7.0, 8.0]\n\n  // A eaiser way to modify a column\n  // Add a minus before real column index to modify column (except the 1st column which requires an empty string)\n  mat[''] = [8, 8];\n  mat[-1] = [9, 9];\n  print( mat );\n\n  // Matrix: 2x4\n  // [8.0, 9.0, 3.0, 4.0]\n  // [8.0, 9.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7613888":"\u003Chr\u003E\n\u003Cp\u003E    The eigen value and eigen vector are not available in the current version. In addition, a variety of methods computing determinant and inverse matrix will be provided for users to choose from. The above content will be updated soon. Please look forward to it.\u003C/p\u003E\n\u003Chr\u003E","7563410":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#%E4%BF%AE%E6%94%B9%E6%9F%90%E4%B8%AA%E5%85%83%E7%B4%A0\"\u003E修改某个元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E4%BF%AE%E6%94%B9%E6%9F%90%E4%B8%80%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E修改某一行元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E4%BF%AE%E6%94%B9%E6%9F%90%E4%B8%80%E5%88%97%E5%85%83%E7%B4%A0\"\u003E修改某一列元素\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Cp\u003E       \n同样以mat矩阵作为例子进行演示\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003EMatrix mat 2x4\n    [1, 2, 3, 4]\n    [5, 6, 7, 8]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"修改某个元素\" class=\"anchor\" href=\"#%E4%BF%AE%E6%94%B9%E6%9F%90%E4%B8%AA%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E修改某个元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  mat[0][0] = 6;\n  print( mat[0] );\n\n  // [6.0, 2.0, 3.0, 4.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"修改某一行元素\" class=\"anchor\" href=\"#%E4%BF%AE%E6%94%B9%E6%9F%90%E4%B8%80%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E修改某一行元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// setRow(List\u0026lt;double\u0026gt; list, int row)\n  mat.setRow([6, 6, 6, 6], 0);\n  print( mat[0] );\n\n  // [6.0, 6.0, 6.0, 6.0]\n\n  // 也有一种简单的方式\n  mat[0] = [8, 8, 8, 8];\n  print( mat[0] );\n\n  // [8.0, 8.0, 8.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"修改某一列元素\" class=\"anchor\" href=\"#%E4%BF%AE%E6%94%B9%E6%9F%90%E4%B8%80%E5%88%97%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E修改某一列元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// setColumn(List\u0026lt;double\u0026gt; list, int column)\n  mat.setColumn([6, 6], 0);\n  print( mat );\n\n  // Matrix: 2x4\n  // [6.0, 2.0, 3.0, 4.0]\n  // [6.0, 6.0, 7.0, 8.0]\n\n  // 也有一种简单的方式\n  // 除第0列外，去掉负号就是列的实际索引\n  mat[''] = [8, 8];\n  mat[-1] = [9, 9];\n  print( mat );\n\n  // Matrix: 2x4\n  // [8.0, 9.0, 3.0, 4.0]\n  // [8.0, 9.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7613882":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#adding-a-row\"\u003EAdding a row\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#adding-a-column\"\u003EAdding a column\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#appending-rows\"\u003EAppending rows\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#appending-columns\"\u003EAppending columns\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Cp\u003E    \nTake the matrix mat as example, too.\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003EMatrix mat 2x4\n    [1, 2, 3, 4]\n    [5, 6, 7, 8]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"adding-a-row\" class=\"anchor\" href=\"#adding-a-row\"\u003E\u003C/a\u003EAdding a row\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// addRow(List\u0026lt;double\u0026gt; list, int index)\n\n  mat.addRow([8,8,8,8], 0);\n  print( mat );\n\n  // Matrix: 3x4\n  // [8.0, 8.0, 8.0, 8.0]\n  // [1.0, 2.0, 3.0, 4.0]\n  // [5.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"adding-a-column\" class=\"anchor\" href=\"#adding-a-column\"\u003E\u003C/a\u003EAdding a column\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// addColumn(List\u0026lt;double\u0026gt; list, int index)\n\n  mat.addColumn([8, 8], 1);\n  print( mat );\n\n  // Matrix: 2x5\n  // [1.0, 8.0, 2.0, 3.0, 4.0]\n  // [5.0, 8.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"appending-rows\" class=\"anchor\" href=\"#appending-rows\"\u003E\u003C/a\u003EAppending rows\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// appendRows(Matrix injected)\n\n  var tail = Matrix.fromList([\n    [8, 8, 8, 8],\n    [8, 8, 8, 8]\n  ]);\n  mat.appendRows(tail);\n  print( mat );\n\n  // Matrix: 4x4\n  // [1.0, 2.0, 3.0, 4.0]\n  // [5.0, 6.0, 7.0, 8.0]\n  // [8.0, 8.0, 8.0, 8.0]\n  // [8.0, 8.0, 8.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"appending-columns\" class=\"anchor\" href=\"#appending-columns\"\u003E\u003C/a\u003EAppending columns\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// appendColumns(Matrix injected)\n\n  var tail = Matrix.fromList([\n    [8, 9],\n    [8, 9]\n  ]);\n  mat.appendColumns(tail);\n  print( mat );\n\n  // Matrix: 2x6\n  // [1.0, 2.0, 3.0, 4.0, 8.0, 9.0]\n  // [5.0, 6.0, 7.0, 8.0, 8.0, 9.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7563414":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%A2%9E%E5%8A%A0%E4%B8%80%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E增加一行元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%A2%9E%E5%8A%A0%E4%B8%80%E5%88%97%E5%85%83%E7%B4%A0\"\u003E增加一列元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E6%8C%89%E8%A1%8C%E8%BF%BD%E5%8A%A0%E4%B8%80%E4%B8%AA%E7%9F%A9%E9%98%B5%E7%9A%84%E6%AF%8F%E4%B8%80%E8%A1%8C\"\u003E按行追加一个矩阵的每一行\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E6%8C%89%E5%88%97%E8%BF%BD%E5%8A%A0%E4%B8%80%E4%B8%AA%E7%9F%A9%E9%98%B5%E7%9A%84%E6%AF%8F%E4%B8%80%E5%88%97\"\u003E按列追加一个矩阵的每一列\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Cp\u003E       \n同样以mat矩阵作为例子进行演示\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003EMatrix mat 2x4\n    [1, 2, 3, 4]\n    [5, 6, 7, 8]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"增加一行元素\" class=\"anchor\" href=\"#%E5%A2%9E%E5%8A%A0%E4%B8%80%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E增加一行元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// addRow(List\u0026lt;double\u0026gt; list, int index)\n\n  mat.addRow([8,8,8,8], 0);\n  print( mat );\n\n  // Matrix: 3x4\n  // [8.0, 8.0, 8.0, 8.0]\n  // [1.0, 2.0, 3.0, 4.0]\n  // [5.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"增加一列元素\" class=\"anchor\" href=\"#%E5%A2%9E%E5%8A%A0%E4%B8%80%E5%88%97%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E增加一列元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// addColumn(List\u0026lt;double\u0026gt; list, int index)\n\n  mat.addColumn([8, 8], 1);\n  print( mat );\n\n  // Matrix: 2x5\n  // [1.0, 8.0, 2.0, 3.0, 4.0]\n  // [5.0, 8.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"按行追加一个矩阵的每一行\" class=\"anchor\" href=\"#%E6%8C%89%E8%A1%8C%E8%BF%BD%E5%8A%A0%E4%B8%80%E4%B8%AA%E7%9F%A9%E9%98%B5%E7%9A%84%E6%AF%8F%E4%B8%80%E8%A1%8C\"\u003E\u003C/a\u003E按行追加一个矩阵的每一行\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// appendRows(Matrix injected)\n\n  var tail = Matrix.fromList([\n    [8, 8, 8, 8],\n    [8, 8, 8, 8]\n  ]);\n  mat.appendRows(tail);\n  print( mat );\n\n  // Matrix: 4x4\n  // [1.0, 2.0, 3.0, 4.0]\n  // [5.0, 6.0, 7.0, 8.0]\n  // [8.0, 8.0, 8.0, 8.0]\n  // [8.0, 8.0, 8.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"按列追加一个矩阵的每一列\" class=\"anchor\" href=\"#%E6%8C%89%E5%88%97%E8%BF%BD%E5%8A%A0%E4%B8%80%E4%B8%AA%E7%9F%A9%E9%98%B5%E7%9A%84%E6%AF%8F%E4%B8%80%E5%88%97\"\u003E\u003C/a\u003E按列追加一个矩阵的每一列\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// appendColumns(Matrix injected)\n\n  var tail = Matrix.fromList([\n    [8, 9],\n    [8, 9]\n  ]);\n  mat.appendColumns(tail);\n  print( mat );\n\n  // Matrix: 2x6\n  // [1.0, 2.0, 3.0, 4.0, 8.0, 9.0]\n  // [5.0, 6.0, 7.0, 8.0, 8.0, 9.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7563418":"\u003Chr\u003E\n\u003Cp\u003E       我们致力于让Matrices运算更快、功能更强大、使用更方便。因此，若您有一些建议或者可以提供代码的改进，请联系我们。同时，为了达成这些目标，我们制定了这个路线图。\u003C/p\u003E\n\u003Chr\u003E\n\u003Col\u003E\n\u003Cli\u003E完善线性代数的相关内容。如提供特征值、特征向量等。\u003C/li\u003E\n\u003C/ol\u003E\n\u003Cbr\u003E\n\u003Col start=\"2\"\u003E\n\u003Cli\u003E为了在特定场景下加速运算速度，我们计划提供float类型作为向量和矩阵的元素的默认数据类型。\u003C/li\u003E\n\u003C/ol\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003E由于Dart不提供单精度浮点数，这一功能的实现方式将有一些曲折(预计2023 Q2更新)。\u003C/p\u003E\n\u003C/blockquote\u003E\n\u003Cbr\u003E\n\u003Col start=\"3\"\u003E\n\u003Cli\u003E给出更多的算法选项。比如求解矩阵的逆矩阵时，提供定义法、LU分解法等不同的算法写成的函数以供调用。\u003C/li\u003E\n\u003C/ol\u003E\n\u003Cbr\u003E","7613881":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#deleting-a-row\"\u003EDeleting a row\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#deleting-a-column\"\u003EDeleting a column\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#deleting-rows\"\u003EDeleting rows\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#deleting-columns\"\u003EDeleting columns\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Cp\u003E    \nTake the matrix mat as example, too.\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003EMatrix mat 3x4\n    [2, 3, 3, 3]\n    [9, 9, 8, 6]\n    [1, 1, 2, 9]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"deleting-a-row\" class=\"anchor\" href=\"#deleting-a-row\"\u003E\u003C/a\u003EDeleting a row\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// deleteRow(int index)\n\n  mat.deleteRow(0);\n  print( mat );\n\n  // Matrix: 1x4\n  // [5.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"deleting-a-column\" class=\"anchor\" href=\"#deleting-a-column\"\u003E\u003C/a\u003EDeleting a column\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// deleteColumn(int index)\n\n  mat.deleteColumn(0);\n  print( mat );\n  \n  // Matrix: 2x3\n  // [2.0, 3.0, 4.0]\n  // [6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"deleting-rows\" class=\"anchor\" href=\"#deleting-rows\"\u003E\u003C/a\u003EDeleting rows\u003C/h4\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003EPS: When deleting multiple rows, the index should be in the order \u003Cstrong\u003Efrom small to large\u003C/strong\u003E\u003C/p\u003E\n\u003C/blockquote\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// deleteRows(List\u0026lt;int\u0026gt; list)\n\n  // First, add a row to mat\n  // Then, delete the 1st and 2nd rows\n  mat.addRow([6, 6, 6, 6], 1);\n  print( mat );\n  mat.deleteRows([0, 1]);\n  print( mat );\n\n  // Matrix: 3x4\n  // [1.0, 2.0, 3.0, 4.0]\n  // [6.0, 6.0, 6.0, 6.0]\n  // [5.0, 6.0, 7.0, 8.0]\n\n  // Matrix: 1x4\n  // [5.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"deleting-columns\" class=\"anchor\" href=\"#deleting-columns\"\u003E\u003C/a\u003EDeleting columns\u003C/h4\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003EPS: When deleting multiple columns, the index should be in the order \u003Cstrong\u003Efrom small to large\u003C/strong\u003E\u003C/p\u003E\n\u003C/blockquote\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// deleteColumns(List\u0026lt;int\u0026gt; list)\n\n  mat.deleteColumns([0, 2]);\n  print( mat );\n\n  // Matrix: 2x2\n  // [2.0, 4.0]\n  // [6.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7550985":"\u003Chr\u003E\n\u003Cp\u003E    We are commited to make Matrices faster, more powerful and more easy-to-use. Thus, if you have some advice or are able to make positive modifications of the code, please contact us and let us know. At the same time, to achieve these goals, we made a roadmap listed below.\u003C/p\u003E\n\u003Chr\u003E\n\u003Col\u003E\n\u003Cli\u003EComplete the relevant contents of basic linear algebra computations, e.g. eigen value and eigen vector.\u003C/li\u003E\n\u003C/ol\u003E\n\u003Cbr\u003E\n\u003Col start=\"2\"\u003E\n\u003Cli\u003EWe plan to provide the float data type as the default data type for vector and matrix in order to reduce memory consumption and improve speed of operations under certain circumstances.\u003C/li\u003E\n\u003C/ol\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003ESince Dart does not provide single-precision floating-point numbers, the implementation of this function will have some difficulties (Expected to be updated in Q2 2023).\u003C/p\u003E\n\u003C/blockquote\u003E\n\u003Cbr\u003E\n\u003Col start=\"3\"\u003E\n\u003Cli\u003EGive more algorithm options. For example, when solving the inverse of a matrix, functions written by different algorithms such as definition method and LU decomposition method are provided for calling.\u003C/li\u003E\n\u003C/ol\u003E\n\u003Cbr\u003E","7563403":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"star我们-\" class=\"anchor\" href=\"#star%E6%88%91%E4%BB%AC-\"\u003E\u003C/a\u003EStar我们 ⭐\u003C/h4\u003E\n\u003Cp\u003E欢迎您进入我们的 \u003Ca href=\"https://github.com/abandoft/matrices\"\u003EGithub\u003C/a\u003E 或 \u003Ca href=\"https://gitee.com/abandoft/matrices\"\u003EGitee\u003C/a\u003E 页面给我们点亮小星星\u003C/p\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"点赞我们-\" class=\"anchor\" href=\"#%E7%82%B9%E8%B5%9E%E6%88%91%E4%BB%AC-\"\u003E\u003C/a\u003E点赞我们 ⍝\u003C/h4\u003E\n\u003Cp\u003E若网络条件允许，您可以进入 \u003Ca href=\"https://pub.dev/packages/matrices\"\u003EPub\u003C/a\u003E 登录您的Google账号给我们点赞(镜像网站不支持点赞)\u003C/p\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"赞助我们-\" class=\"anchor\" href=\"#%E8%B5%9E%E5%8A%A9%E6%88%91%E4%BB%AC-\"\u003E\u003C/a\u003E赞助我们 ❤\u003C/h4\u003E\n\u003Cp\u003E若经济条件允许，您还可以点击 \u003Ca href=\"https://paypal.me/abandoft\"\u003EPayPal\u003C/a\u003E 给我们买杯咖啡\u003C/p\u003E\n\u003Chr\u003E","7563412":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%88%A0%E9%99%A4%E6%9F%90%E4%B8%80%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E删除某一行元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%88%A0%E9%99%A4%E6%9F%90%E4%B8%80%E5%88%97%E5%85%83%E7%B4%A0\"\u003E删除某一列元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%88%A0%E9%99%A4%E6%9F%90%E5%87%A0%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E删除某几行元素\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%88%A0%E9%99%A4%E6%9F%90%E5%87%A0%E5%88%97%E5%85%83%E7%B4%A0\"\u003E删除某几列元素\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Cp\u003E       \n同样以mat矩阵作为例子进行演示\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003EMatrix mat 3x4\n    [2, 3, 3, 3]\n    [9, 9, 8, 6]\n    [1, 1, 2, 9]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"删除某一行元素\" class=\"anchor\" href=\"#%E5%88%A0%E9%99%A4%E6%9F%90%E4%B8%80%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E删除某一行元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// deleteRow(int index)\n\n  mat.deleteRow(0);\n  print( mat );\n\n  // Matrix: 1x4\n  // [5.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"删除某一列元素\" class=\"anchor\" href=\"#%E5%88%A0%E9%99%A4%E6%9F%90%E4%B8%80%E5%88%97%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E删除某一列元素\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// deleteColumn(int index)\n\n  mat.deleteColumn(0);\n  print( mat );\n  \n  // Matrix: 2x3\n  // [2.0, 3.0, 4.0]\n  // [6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"删除某几行元素\" class=\"anchor\" href=\"#%E5%88%A0%E9%99%A4%E6%9F%90%E5%87%A0%E8%A1%8C%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E删除某几行元素\u003C/h4\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003EPS: 删除多行时，应按照索引从小到大的顺序\u003C/p\u003E\n\u003C/blockquote\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// deleteRows(List\u0026lt;int\u0026gt; list)\n\n  // 先增加一行元素\n  // 再删除第0行和第1行\n  mat.addRow([6, 6, 6, 6], 1);\n  print( mat );\n  mat.deleteRows([0, 1]);\n  print( mat );\n\n  // Matrix: 3x4\n  // [1.0, 2.0, 3.0, 4.0]\n  // [6.0, 6.0, 6.0, 6.0]\n  // [5.0, 6.0, 7.0, 8.0]\n\n  // Matrix: 1x4\n  // [5.0, 6.0, 7.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"删除某几列元素\" class=\"anchor\" href=\"#%E5%88%A0%E9%99%A4%E6%9F%90%E5%87%A0%E5%88%97%E5%85%83%E7%B4%A0\"\u003E\u003C/a\u003E删除某几列元素\u003C/h4\u003E\n\u003Cblockquote\u003E\n\u003Cp\u003EPS: 删除多列时，应按照索引从小到大的顺序\u003C/p\u003E\n\u003C/blockquote\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  /// deleteColumns(List\u0026lt;int\u0026gt; list)\n\n  mat.deleteColumns([0, 2]);\n  print( mat );\n\n  // Matrix: 2x2\n  // [2.0, 4.0]\n  // [6.0, 8.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7549118":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"star-us-\" class=\"anchor\" href=\"#star-us-\"\u003E\u003C/a\u003EStar us ⭐\u003C/h4\u003E\n\u003Cp\u003EYou are welcome to visit our \u003Ca href=\"https://github.com/abandoft/matrices\"\u003EGithub\u003C/a\u003E or \u003Ca href=\"https://gitee.com/abandoft/matrices\"\u003EGitee\u003C/a\u003E pages and give us a star.\u003C/p\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"give-us-a-like-\" class=\"anchor\" href=\"#give-us-a-like-\"\u003E\u003C/a\u003EGive us a like ⍝\u003C/h4\u003E\n\u003Cp\u003EIf network conditions permit, you may visit \u003Ca href=\"https://pub.dev/packages/matrices\"\u003EPub\u003C/a\u003E, log in you Google account and give us a like. (Note: Giving like is not supported for a mirror site.)\u003C/p\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"donate-\" class=\"anchor\" href=\"#donate-\"\u003E\u003C/a\u003EDonate ❤\u003C/h4\u003E\n\u003Cp\u003EIf the financial condition is permitted, you may click \u003Ca href=\"https://paypal.me/abandoft\"\u003EPayPal\u003C/a\u003E and buy us a coffee.\u003C/p\u003E\n\u003Chr\u003E","7613879":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"overview\" class=\"anchor\" href=\"#overview\"\u003E\u003C/a\u003EOverview\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#addition\"\u003EAddition\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#subtraction\"\u003ESubtraction\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#scalar-multiplication\"\u003EScalar Multiplication\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#matrix-product\"\u003EMatrix Product\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"addition\" class=\"anchor\" href=\"#addition\"\u003E\u003C/a\u003EAddition\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6]\n  ]);\n  print( mat + 3 );\n  print( mat + mat );\n\n  // Matrix: 2x3\n  // [4.0, 5.0, 6.0]\n  // [7.0, 8.0, 9.0]\n\n  // Matrix: 2x3\n  // [2.0, 4.0, 6.0]\n  // [8.0, 10.0, 12.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"subtraction\" class=\"anchor\" href=\"#subtraction\"\u003E\u003C/a\u003ESubtraction\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6]\n  ]);\n  var mat1 = Matrix.fromList([\n    [1, 2, 1],\n    [1, 2, 1]\n  ]);\n  print( mat - 3 );\n  print( mat - mat1 );\n\n  // Matrix: 2x3\n  // [-2.0, -1.0, 0.0]\n  // [1.0, 2.0, 3.0]\n\n  // Matrix: 2x3\n  // [0.0, 0.0, 2.0]\n  // [3.0, 3.0, 5.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"scalar-multiplication\" class=\"anchor\" href=\"#scalar-multiplication\"\u003E\u003C/a\u003EScalar Multiplication\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  // Scalar Multiplication (Scalar should be on the right position of the operator *)\n  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6]\n  ]);\n  print( mat * 3 );\n\n  // Matrix: 2x3\n  // [3.0, 6.0, 9.0]\n  // [12.0, 15.0, 18.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"matrix-product\" class=\"anchor\" href=\"#matrix-product\"\u003E\u003C/a\u003EMatrix Product\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6]\n  ]);\n\n  // Matrix Product\n  var multi = Matrix.fromList([\n    [2, 3.5],\n    [1, -2],\n    [-4, 0.5]\n  ]);\n  print( mat * multi );\n\n  // Matrix: 2x2\n  // [-8.0, 1.0]\n  // [-11.0, 7.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7563413":"\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"速览\" class=\"anchor\" href=\"#%E9%80%9F%E8%A7%88\"\u003E\u003C/a\u003E速览\u003C/h4\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%8A%A0%E6%B3%95\"\u003E加法\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E5%87%8F%E6%B3%95\"\u003E减法\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E6%95%B0%E4%B9%98\"\u003E数乘\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\"#%E4%B9%98%E6%B3%95\"\u003E乘法\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n\u003Chr\u003E\n\u003Ch4\u003E\n\u003Ca id=\"加法\" class=\"anchor\" href=\"#%E5%8A%A0%E6%B3%95\"\u003E\u003C/a\u003E加法\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6]\n  ]);\n  print( mat + 3 );\n  print( mat + mat );\n\n  // Matrix: 2x3\n  // [4.0, 5.0, 6.0]\n  // [7.0, 8.0, 9.0]\n\n  // Matrix: 2x3\n  // [2.0, 4.0, 6.0]\n  // [8.0, 10.0, 12.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"减法\" class=\"anchor\" href=\"#%E5%87%8F%E6%B3%95\"\u003E\u003C/a\u003E减法\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6]\n  ]);\n  var mat1 = Matrix.fromList([\n    [1, 2, 1],\n    [1, 2, 1]\n  ]);\n  print( mat - 3 );\n  print( mat - mat1 );\n\n  // Matrix: 2x3\n  // [-2.0, -1.0, 0.0]\n  // [1.0, 2.0, 3.0]\n\n  // Matrix: 2x3\n  // [0.0, 0.0, 2.0]\n  // [3.0, 3.0, 5.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"数乘\" class=\"anchor\" href=\"#%E6%95%B0%E4%B9%98\"\u003E\u003C/a\u003E数乘\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  // 数乘(数字应在乘号右侧)\n  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6]\n  ]);\n  print( mat * 3 );\n\n  // Matrix: 2x3\n  // [3.0, 6.0, 9.0]\n  // [12.0, 15.0, 18.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Ch4\u003E\n\u003Ca id=\"乘法\" class=\"anchor\" href=\"#%E4%B9%98%E6%B3%95\"\u003E\u003C/a\u003E乘法\u003C/h4\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6]\n  ]);\n\n  // 矩阵乘法\n  var multi = Matrix.fromList([\n    [2, 3.5],\n    [1, -2],\n    [-4, 0.5]\n  ]);\n  print( mat * multi );\n\n  // Matrix: 2x2\n  // [-8.0, 1.0]\n  // [-11.0, 7.0]\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E","7613883":"\u003Chr\u003E\n\u003Cp\u003E    Vectors have the type of List\u0026lt; double \u0026gt;. If you are using List\u0026lt; int \u0026gt; and List\u0026lt; num \u0026gt;, variable assignment may fail without implicit type cast. All constructors provided by Matrices have no such risk. But if you have defined a List variable and assign it to a Matrix row or column, variable assignment may fail. Examples are as follows:\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  var vec = [6, 6, 6];\n  Vector vec1 = [6, 6, 6];\n  List\u0026lt;double\u0026gt; vec2 = [6, 6, 6];\n\n  // The code listed below will fail to execute.\n  // If you put vec1 or vec2 instead, the code runs normally,\n  // because vec has a type of List\u0026lt;int\u0026gt; rather than List\u0026lt;double\u0026gt;\n  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6],\n    vec\n  ]);\n  print( mat );\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Chr\u003E","7563416":"\u003Chr\u003E\n\u003Cp\u003E       向量是List\u0026lt; double \u0026gt;类型。如果您使用了List\u0026lt; int \u0026gt;或List\u0026lt; num \u0026gt;类型，在没有隐式类型转换的情况下，赋值将会失败。使用Matrices提供的所有构造方法均没有这种风险。但如果您先定义了List，然后将其赋值给一个Matrix的行或者列，可能会导致这种风险。示例如下：\u003C/p\u003E\n\u003Cdiv class=\"markdown-code-block\"\u003E\n\u003Cpre lang=\"dart\" class=\"dart\"\u003E\u003Ccode\u003E  var vec = [6, 6, 6];\n  Vector vec1 = [6, 6, 6];\n  List\u0026lt;double\u0026gt; vec2 = [6, 6, 6];\n\n  // 以下代码将无法运行\n  // 将vec改为vec1或vec2后，可以运行\n  // 因为vec是List\u0026lt;int\u0026gt;类型，而非List\u0026lt;double\u0026gt;\n  var mat = Matrix.fromList([\n    [1, 2, 3],\n    [4, 5, 6],\n    vec\n  ]);\n  print( mat );\n\u003C/code\u003E\u003C/pre\u003E\n\u003Cdiv class=\"markdown-code-block-copy-btn\"\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003Chr\u003E","7590823":"\u003Cp\u003E.keep\u003C/p\u003E"}}</script>